0

我有一个模型包含文件 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>
4

1 回答 1

1

如果您的路线中有 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);
}
于 2013-03-13T09:05:28.907 回答