MVC 3问题,EditorFor()TextBoxFor()

Joe*_*itz 0 c# asp.net-mvc-3

快速了解MVC 3,

查看传递数据的[HttpPost] ActionResult方法有问题,具体取决于我是否在视图中使用EditorFor()或TextBoxFor().

我的编辑视图中有一些字段,我想要只读,所以我使用过:

<div class="editor-field">
    @Html.EditorFor(model => model.ModelNumber)
    @*Html.TextBoxFor(model => model.ModelNumber, new { disabled = "disabled", @readonly =      "readonly" })*@
    @*Html.ValidationMessageFor(model => model.ModelNumber)*@
    </div> 
Run Code Online (Sandbox Code Playgroud)

这是ActionResult控制器方法:

 public ActionResult Edit(int id)
    {
        var NPSProc = db.NPSProcesseds.SingleOrDefault(p => p.Id == id);
        return View(NPSProc);
    }

    [HttpPost]
    public ActionResult Edit(NPSProcessed Processed)
    {
        try
        {

            if (ModelState.IsValid)
            {
                db.Entry(Processed).State = EntityState.Modified;
                db.SaveChanges();
                return new RedirectResult("~/Home", false);
            }
            else
            {
                return View("Edit", Processed);
            }
        }
        catch (DbEntityValidationException dbEx)
        {
            foreach (var validationErrors in dbEx.EntityValidationErrors)
            {
                foreach (var validationError in validationErrors.ValidationErrors)
                {
                    Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
                }
            }

            return View("Edit", Processed);
        }
Run Code Online (Sandbox Code Playgroud)

当我删除EditorFor()方法的注释时,ModelNumber字段在传递给HttpPost ActionResult方法的Processed对象中包含一个值ModelNumber.

如果我注释EditorFor()方法并删除TextBoxFor()方法的注释,则MethodNumber字段包含null.

似乎EditorFor()方法正在执行TextBoxFor()方法没有做的一些额外工作.

有人能指出我正确的方向,并指出我正在犯的错误.

谢谢

SLa*_*aks 5

禁用的<input>元素不会发回服务器.

因为您设置disabled="disabled"TextBoxFor,浏览器永远不会发回该值.