MVC Model属性在页面提交时重置

时间:2013-08-13 06:52:42

标签: asp.net-mvc

我是MVC的新手,所以这可能听起来很傻,但是这里有:我有一个模型,其中包含两个需要传递给编辑表单的列表:

public class BaseViewModel
{
    public IEnumerable<portal_notifications_types> Types { get; set; }
    public IEnumerable<portal_notifications_importances> Importances { get; set; }
}

在编辑表单中,我有两个此字段的下拉列表:

@Html.DropDownListFor(m => m.Notification.TypeId, new SelectList(Model.Types, "Id", "Type"), "-- Select type --", new { onchange = "GetNotifType();", style = "width:150px;" })

@Html.DropDownListFor(m => m.Notification.ImportanceId,  new SelectList(Model.Importances, "Id", "Importance"), "-- Select importance --", new { style = "width:150px;" })

当我第一次进入编辑视图时,一切正常,填充下拉列表并选择相应的值。  但是,当我提交表单时,下拉列表会抛出错误,因为Model.Types和Model.Importances列表为空。  我怎么能克服这个?我想避免使用ViewBag来存储这些列表,虽然我知道它会起作用。

2 个答案:

答案 0 :(得分:1)

Post 操作方法中再次传递查看模型

[HttpPost]
public ActionResult Index(ViewModel m)
{
     return View(m); //Pass the View Model again.
}

答案 1 :(得分:0)

您必须在SelectLists的{​​{1}} Controller方法中重新填充这两个POST,然后再次在视图中传递Edit进行编辑。有关详细信息,请分享ViewModel Controller代码。