razor - 输入隐藏显示不正确的 ID (Guid.Empty)

标签 razor model asp.net-mvc-4

我想要一个输入(隐藏)字段来存储某个实体的 ID...

但是这段代码:

@Html.HiddenFor(model => model.Id)

此 HTML 标记的结果:

<input id="Id" name="Id" type="hidden" value="00000000-0000-0000-0000-000000000000" />

这很奇怪,因为我确信 Model.Id != Guid.Empty。我可以通过将 @Model.Id 注入(inject) HTML 来确认它。这工作正常:

<input type="hidden" id="Id" name="Id" value="@Model.Id" />

为什么 View Engine 决定放置这些零而不是正确的 ID?

编辑:我没有添加原始代码,因为它非常复杂,但这里是 super 简单的示例,显示几乎相同的行为(它在输入值中使用空字符串而不是 Guid.Empty):

查看:

@using MvcApplication4.Models
@model Foo

@using (Html.BeginForm())
{
    @Html.HiddenFor(model => model.Id)
    @Model.Id

    <input type="submit" value="ok" />
}

Controller :

namespace MvcApplication4.Controllers
{
    public class HomeController : Controller
    {
        [HttpGet]
        public ActionResult Index()
        {
            Foo foo = new Foo();
            return View(foo);
        }  

        [HttpPost]
        public ActionResult Index(Foo foo)
        {
            foo.Id = Guid.NewGuid();
            return View(foo);
        } 
    }
}

型号:

using System;

namespace MvcApplication4.Models 
{
    public class Foo
    {
         public Guid? Id { get; set; }
    }
}

在采取行动后,问题当然是可见的。

最佳答案

这就解释了一切。您遇到了与 this question 中另一个人相同的问题。请查看已接受的答案以及对其的评论,因为它与您的问题相关。

关于razor - 输入隐藏显示不正确的 ID (Guid.Empty),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14043115/

相关文章:

asp.net-mvc - 如何在 View 中相乘

c# - 如何找出 ASP.NET MVC View 中的错误计数?

asp.net-mvc - 如何在 mvc 的 apicontroller 中获取部分 View 字符串

c# - ASP.NET MVC : populate (bind data) in listbox

c# - .NET 抛出 JSON 内容类型的异常

asp.net - Css 在 asp.net mvc3 Razor Views 中不能正常工作

model - 如何在 RSpec 测试中设置模型关联?

mysql - Node 、Sequelize、同步模型、混合力 : true/false

asp.net-mvc - 强制 SquishIt 刷新/重新创建缩小的文件

javascript - jQuery 验证和图像文件