我的模型包含文件XSID(Guid)和ID(nvarchar),现在我想用@ Html.EditorFor(model => model.ID)编辑ID值,但它无法获得正确的值,它也获得了XSID的值。但是@ Html.DisplayFor(model => model.ID)可以获得正确的值。 我不知道为什么?
@using Student.Resource;
@using M = Student.Model;
@model M.Stu_XS
<ul class="cur">
<li class="line">
<label>
@Stu_XS.ID:
</label>
<span>
@Html.HiddenFor(model => model.XSID)
@Html.DisplayFor(model => model.ID)
@Html.EditorFor(model => model.ID)
@Html.ValidationMessageFor(model => model.ID)
</span>
</li>
</ul>
答案 0 :(得分:1)
如果您的路线中有ID,则会使用该值,而不是模型中的ID。
例如,假设您有以下模型:
public class Stu_XS
{
public int ID { get; set; }
public Guid XSID { get; set; }
}
以及以下控制器操作:
public ActionResult SomeAction(int id)
{
var model = new Stu_XS();
model.ID = 123;
return View(model);
}
你会这样请求:
/somecontroller/someaction/456
Html.EditorFor
将显示来自路线的456
,而不会显示来自模型的123
。这是设计的。如果您想要更改此行为,则必须从ID
中移除ModelState
,以便使用模型中的值:
public ActionResult SomeAction(int id)
{
var model = new Stu_XS();
model.ID = 123;
ModelState.Remove("id");
return View(model);
}