url中的mvc动作名称

时间:2011-11-20 17:02:35

标签: asp.net-mvc-3 razor

更新:

进入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 } );
}

我做错了什么?

2 个答案:

答案 0 :(得分:0)

表单的action属性设置为SaveDetails操作,因此在提交后,它会将浏览器重定向到此操作。

答案 1 :(得分:0)

我认为你做错了什么,但我认为你不能做你想要达到的目标。请求必须在某处,在mvc中,url用于标识要执行的操作。如果您没有提交帖子,那么网址将会改变。

将表单提交给不同的操作的一种方法是使用一些ajax。

提交表单是一个POST。您可以使用属性来标识操作应响应的请求方法。这意味着您可以创建另一个也称为Index的操作,但为其提供[HttpPost]属性。

[HttpPost]
public ActionResult Index(Models.ContactViewModel cvm)
{
    return View();
}

这样它就不会在网址中显示动作。