@ Html.EditorFor(model => model.ID)无法显示正确的值

时间:2013-03-13 08:51:10

标签: asp.net-mvc-3

我的模型包含文件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>

1 个答案:

答案 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);
}