Asp.net mvc 在mvc中的另一个视图上返回一个视图的错误或消息

Asp.net mvc 在mvc中的另一个视图上返回一个视图的错误或消息,asp.net-mvc,asp.net-mvc-4,model-view-controller,Asp.net Mvc,Asp.net Mvc 4,Model View Controller,在_layout.cshtml页面上有一个登录模式,用户可以在任何时间或任何页面登录。当模态加载时,我们通过$(“#divModal”).load(“/Login/Index”)向模态添加“Login”视图 提交表单时,一切正常。 但是我只是想知道除了使用jqueryajax之外,是否有其他方法可以在同一页面的对话框上显示错误或自定义消息,如“Login failed” 1) 我试图返回view(),但它将页面重定向到登录/索引页面。 2) 我们不能使用局部视图,然后我们必须将登录模型与其他模型

在_layout.cshtml页面上有一个登录模式,用户可以在任何时间或任何页面登录。当模态加载时,我们通过
$(“#divModal”).load(“/Login/Index”)向模态添加“Login”视图
提交表单时,一切正常。
但是我只是想知道除了使用jqueryajax之外,是否有其他方法可以在同一页面的对话框上显示错误或自定义消息,如“Login failed”

1) 我试图返回view(),但它将页面重定向到登录/索引页面。 2) 我们不能使用局部视图,然后我们必须将登录模型与其他模型一起传递


除了使用Jquery ajax,还有其他方法可以实现这一点。

如果出现错误,可以使用
JsonResult
。因此,您可以在服务器上编写一个自定义操作筛选器,捕获异常并将其转换为JSON响应:

public class MyErrorHandlerAttribute : FilterAttribute, IExceptionFilter
{
    public void OnException(ExceptionContext filterContext)
    {
        filterContext.ExceptionHandled = true;
        filterContext.Result = new JsonResult
        {
            Data = new { success = false, error = filterContext.Exception.ToString() },
            JsonRequestBehavior = JsonRequestBehavior.AllowGet
        };
    }
}
然后在您的视图中,您可以在ajax调用中添加回调:

error: function(xhr) {
        try {
            // a try/catch is recommended as the error handler
            // could occur in many events and there might not be
            // a JSON response from the server
            var json = $.parseJSON(xhr.responseText);
            alert(json.errorMessage);
        } catch(e) { 
            alert('something bad happened');
        }
    }

谢谢@Sirwan,我知道了。在Json帮助下返回。