获得加快速度MVC 3,MVC 3问题,EditorFor()TextBoxFor()
有一个问题的[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>
这里是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);
}
当我删除了在EditorFor()方法的注释中,ModelNumber字段在传递给HttpPost ActionResult方法的Processed对象中包含值ModelNumber。
如果我评论EditorFor()方法并删除TextBoxFor()方法的注释 MethodNumber字段包含空值。
看来EditorFor()方法正在执行一些TextBoxFor()方法没有做的额外工作。
有人能指出我正确的方向,并指出我正在犯的错误。
感谢
乔
+ 1 - 如果您希望将该值重新发布但不能由用户直接编辑,请考虑Html.HiddenFor(x => x.Whatever) – Tejs