MVC中的Mantain URL发布到不同的操作

时间:2015-09-03 16:08:18

标签: c# asp.net-mvc asp.net-mvc-4 post

我正在尝试使用我的MVC应用程序来解决小问题。一切都是控制器提供的CRUD网址的常用设置。

在其中一个视图中,我必须对输入的数据执行验证检查,这将无法保存数据。这听起来很复杂,但基本上只是将表单提交到两个不同的URL:一个将保存数据(无论是什么)并重定向到Index,另一个将执行验证并显示任何错误。

我遇到的问题是“检查”操作不会保留URL中的值。为了显示一些代码和示例,假设我转到http://localhost/MyApp/Items/Edit/3,然后单击“检查”按钮,我将看到相同的视图,突出显示错误,但URL将更改为{{1} }。

有没有办法保留以前的网址?

我决定点击哪个帖子操作的方式是通过一些在提交之前更改表单操作属性的小javascript:

http://localhost/MyApp/Items/Check

控制器操作很简单:

$(document).ready(function() {
    $(".submit").click(function (ev) {
        var $buttonClicked = $(this);

        var $form = $("form");

        $form.attr("action", $buttonClicked.data("action")); // we store the URL in the data-action attribute of the button
        $form.submit();
    });
});

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

一种方法是将两者都路由到同一个动作并为模式添加额外的参数,这样你的动作就像:

[HttpPost]
public ActionResult Edit(MyItem model, bool checkOnly) 
{
   return checkOnly ? Check(model) : Edit(model);
}

private ActionResult Edit(MyItem model)  {...}
private ActionResult Check(MyItem model)  {...}