我正在使用ASP.NET MVC和jQuery。我有以下MVC Action,它返回Success上的部分页面。在应用程序错误时,我不确定将其发送到客户端如何正确处理它:
public ActionResult LoadFilterSet(int filterSetId)
{
try
{
BreadCrumbManager bcManager = this.ResetBreadCrumbManager(this.BreadCrumbManagerID);
GeneralHelper.LoadBreadCrumbManager(bcManager, filterSetId);
ViewData["BreadCrumbManager"] = bcManager;
return View("LoadFilterSet");
}
catch (Exception ex)
{
return Content("");
}
}
以下是我的jQuery ajax调用。请注意,我正在检查数据长度以确保没有错误。请建议我更好的方法。
$.ajax({
type: "GET",
dataType: "html",
async: true,
data: ({ filterSetId: selectedId }),
url: link,
contentType: "text/html; charset=utf-8",
success: function(data, textStatus) {
if (data.length > 0) {
// Clear the local filters first.
clearLocalFilters();
$('td.selected-filters table.filters-display').append(data);
}
}
});
答案 0 :(得分:32)
我会在你的ajax调用设置中添加一个错误函数。让服务器确定要显示的错误消息,并将其传递给ajax错误处理程序并让它显示它。
success: function(data, textStatus) {
// Clear the local filters first.
clearLocalFilters();
$('td.selected-filters table.filters-display').append(data);
},
error: function (data) {
alert(data.responseText); // use any display logic here
}
在控制器的操作中,如果发现错误
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Content(errorMessage, MediaTypeNames.Text.Plain);
答案 1 :(得分:1)
我认为如果抛出错误,你可以return Content(false.ToString().ToLower());
,然后检查数据是否为假
if(data != false)
{
//do stuff
}
或
if(!data)
alert("Error");
else
{
//do stuff
}