首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输入隐藏显示不正确的Id (Guid.Empty)

输入隐藏显示不正确的Id (Guid.Empty)
EN

Stack Overflow用户
提问于 2012-12-26 16:11:39
回答 1查看 3.2K关注 0票数 5

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

但是这个代码:

代码语言:javascript
复制
@Html.HiddenFor(model => model.Id)

结果在此HTML标记中:

代码语言:javascript
复制
<input id="Id" name="Id" type="hidden" value="00000000-0000-0000-0000-000000000000" />

这很奇怪,因为我确信Model.Id != Guid.Empty。我可以通过将@Model.Id注入到HTML中来确定它。这样做很好:

代码语言:javascript
复制
<input type="hidden" id="Id" name="Id" value="@Model.Id" />

为什么视图引擎决定把这些零而不是正确的Id?

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

查看:

代码语言:javascript
复制
@using MvcApplication4.Models
@model Foo

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

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

主计长:

代码语言:javascript
复制
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);
        } 
    }
}

型号:

代码语言:javascript
复制
using System;

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

当然,在采取事后行动后,问题是显而易见的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-26 18:33:34

这就解释了一切。您正在经历与this question中的另一个人相同的问题。请参阅已接受的答案和评论,因为它与您的问题有关。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14043115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档