更新:
进入save方法的模型是PartialViewModel,它在save方法中被推送到索引的ContactViewModel并发回。这不清楚。
我正在玩MVC3,并且有一个带有SaveDetails操作的联系人控制器。索引cshtml有一个部分表单,其操作指向该控制器。
当我提交表单未完全完成,从而触发验证时,url现在包含SaveDetails操作名称(http:// localhost:7401 / Contact / SaveDetails)。
表单代码为:
@using (Html.BeginForm("SaveDetails", "Contact")) {
...
}
控制器操作如下所示:
public ActionResult SaveDetails(Models.PartialsViewModel pvm)
{
return View("Index", new ContactViewModel{ PartialsViewModel = pvm } );
}
我做错了什么?
答案 0 :(得分:0)
表单的action属性设置为SaveDetails操作,因此在提交后,它会将浏览器重定向到此操作。
答案 1 :(得分:0)
我认为你做错了什么,但我认为你不能做你想要达到的目标。请求必须在某处,在mvc中,url用于标识要执行的操作。如果您没有提交帖子,那么网址将会改变。
将表单提交给不同的操作的一种方法是使用一些ajax。
提交表单是一个POST。您可以使用属性来标识操作应响应的请求方法。这意味着您可以创建另一个也称为Index的操作,但为其提供[HttpPost]属性。
[HttpPost]
public ActionResult Index(Models.ContactViewModel cvm)
{
return View();
}
这样它就不会在网址中显示动作。