我想要一个输入(隐藏)字段来存储某个实体的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" />为什么视图引擎决定把这些零而不是正确的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; }
}
}当然,在采取事后行动后,问题是显而易见的。
发布于 2012-12-26 18:33:34
这就解释了一切。您正在经历与this question中的另一个人相同的问题。请参阅已接受的答案和评论,因为它与您的问题有关。
https://stackoverflow.com/questions/14043115
复制相似问题