在没有重定向的情况下突破ActionResult

时间:2015-08-07 20:12:04

标签: asp.net-mvc

有没有办法从ActionResult方法直接突破?我在我的表单中提交了一些手动验证提交控制器。如果验证失败,我想退出该方法。没有重定向,没有。只需将它停在它的轨道上然后退出即可。像休息或退出的东西。这是否存在,或者我是否必须返回Redirect()?

2 个答案:

答案 0 :(得分:0)

只需使用此代码return View(); 如果你想返回一些东西,你可以使用强类型并在视图中返回它,如下所示:

return view(model);

答案 1 :(得分:0)

MVC控制器上的公共方法和ActionResult的返回是HTTP请求/响应对话的抽象。因此,如果您的表单触发了请求,则需要进行响应。

也许你应该重新解释你的问题,你实际想要实现的目标。

假设您在手动验证失败后不想再次呈现页面,则可以使用以下选项:

您可以执行以异步方式传输表单数据的请求,从而无需使用@Ajax.BeginForm方法重定向或呈现整页。 然后,您的控制器可以返回一些HTTP状态代码,指示您在客户端JavaScript代码中作出反应的验证失败(例如,400 Bad Request)。

在视图中呈现AJAX表单的示例:

@using (Ajax.BeginForm("YourAction", "YourController",
                        new AjaxOptions 
                            { 
                              HttpMethod = "GET",
                              InsertionMode = InsertionMode.InsertAfter,
                              UpdateTargetId = "domElementId",
                              OnSuccess = "JavaScriptFunctionToCall", 
                              OnFailure = "JavaScriptFunctionToCall"}))
{
    @* Put your form inputs here *@
}