加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

剃刀 – 输入隐藏显示不正确的ID(Guid.Empty)

发布时间:2020-12-16 07:00:14 所属栏目:asp.Net 来源:网络整理
导读:我想有一个输入(隐藏)字段,存储一些实体的Id … 但是这段代码: @Html.HiddenFor(model = model.Id) 此HTML标记中的结果: input id="Id" name="Id" type="hidden" value="00000000-0000-0000-0000-000000000000" / 这很奇怪,因为我确信Model.Id!= Guid.Emp
我想有一个输入(隐藏)字段,存储一些实体的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注入HTML来确定它.这很好用:

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

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

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

视图:

@using MvcApplication4.Models
@model Foo

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

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

控制器:

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遇到与其他人相同的问题.请查看已接受的答案以及与您的问题相关的评论.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读