我有一个提交模型的表单.控制器将该模型保存到数据库,然后创建新模型并返回具有该新模型的EditCreate视图.
我遇到的问题是没有显示新模型.而是显示刚刚发布的模型.我通过调试器跟踪它到视图并看到值是新的,但是当页面显示时,它显示刚刚提交的所有旧值.
调节器
[HttpPost]
public ActionResult AddProduct(MyEntityModel myModel)
{
// Save
if (myModel.ID != 0) {
Update(myModel);
} else {
Add(myModel);
}
ModelState.Clear(); // This fixed it
// Show page for new model
MyEntityModel newModel = new MyEntityModel();
newModel.ID = 0;
// Edit/Create page
ActionResult ret = EditCreateRow(newModel);
return ret;
}
Run Code Online (Sandbox Code Playgroud)
模型
public partial class STM_AuditData
{
public int ID { get; set; }
public Nullable<System.DateTime> ServiceDate { get; set; }
public string Product { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图
@Html.LabelFor(model => model.ServiceDate)
@Html.EditorFor(model => model.ServiceDate)
@Html.LabelFor(model => model.Product)
@Html.EditorFor(model => model.Product)
@Html.HiddenFor(model => model.AuditID)
Run Code Online (Sandbox Code Playgroud)
我该怎么做以确保正确的模型显示?谢谢.
这是EditCreateRow的代码
public ActionResult EditCreateRow(MyEntityModel row)
{
MyEntityModel.IntsToBools(ref row);
EditCreate_SetViewBagItems(row);
return View("~/Views/MyEntityModel/EditCreate.cshtml", row);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这种情况的原因是HtmlHelper的工作原理.在HTML元素中设置值时,使用IValueProvider的实现,它有几个选项来获取值.您可以在aspnetwebstack上查看默认列表.与更好的MVC框架相比,ASP.NET MVC是违反直觉的.
如果你添加
ModelState.Clear()
Run Code Online (Sandbox Code Playgroud)
回来之前,我想你可能已经解决了.
| 归档时间: |
|
| 查看次数: |
394 次 |
| 最近记录: |