5
我想有一个输入(隐藏)字段存储一些实体的标识...输入隐藏显示不正确的ID(Guid.Empty)
但这代码:
@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; }
}
}
问题当然可以在发布后执行。
我可以看到你的模型吗? –
以及调用视图的控制器操作代码 – MarkG
除了Id可以为空的Guid之外,模型或操作方法中没有任何有趣的内容。 – user1068352