use*_*352 5 model razor asp.net-mvc-4
我想有一个输入(隐藏)字段,存储一些实体的Id ...
但是这段代码:
@Html.HiddenFor(model => model.Id)
Run Code Online (Sandbox Code Playgroud)
此HTML标记中的结果:
<input id="Id" name="Id" type="hidden" value="00000000-0000-0000-0000-000000000000" />
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我很确定Model.Id != Guid.Empty.我可以通过注入@Model.IdHTML 来确认它.这很好用:
<input type="hidden" id="Id" name="Id" value="@Model.Id" />
Run Code Online (Sandbox Code Playgroud)
为什么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" />
}
Run Code Online (Sandbox Code Playgroud)
控制器:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
模型:
using System;
namespace MvcApplication4.Models
{
public class Foo
{
public Guid? Id { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
在采取行动后,问题当然是可见的.
| 归档时间: |
|
| 查看次数: |
2406 次 |
| 最近记录: |