Asp.net mvc 在mvc中的另一个视图上返回一个视图的错误或消息
在_layout.cshtml页面上有一个登录模式,用户可以在任何时间或任何页面登录。当模态加载时,我们通过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) 我们不能使用局部视图,然后我们必须将登录模型与其他模型
$(“#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帮助下返回。