C# 使用ajax时检查返回的数据是否为空数据
我正在使用下面的jQuery代码搜索员工,一旦 如果存在employee,则返回表中的其他字段 如果找不到员工,我希望能够向用户发送警报。 我怎样才能做到这一点C# 使用ajax时检查返回的数据是否为空数据,c#,jquery,asp.net-mvc-4,C#,Jquery,Asp.net Mvc 4,我正在使用下面的jQuery代码搜索员工,一旦 如果存在employee,则返回表中的其他字段 如果找不到员工,我希望能够向用户发送警报。 我怎样才能做到这一点 $(document).on("click", "#btnEmpNumber", function () { var getdata = $('#EmpNumber').val(); var url = "@Url.Action("GetEmployeeInformation", "Home")"; $.pos
$(document).on("click", "#btnEmpNumber", function () {
var getdata = $('#EmpNumber').val();
var url = "@Url.Action("GetEmployeeInformation", "Home")";
$.post(url, { 'objdata': getdata }, function (data) {
if (data == undefined) {
alert("Invalid Employee");
}
$('#mainYourinformation').html(data);
});
});
public ActionResult GetEmployeeInformation(字符串objdata)
{
Customerproductdto objGetEmpData=null;
尝试
{
objGetEmpData=\u DataService.SearchEmplByNumber(objdata);
}
捕获(例外情况除外)
{
记录器错误(ex);
}
返回PartialView(“\empu information”,objGetEmpData);
}
公共类Customerproductdto
{
公共字符串EmployeeNumber{get;set;}
公共字符串EmployeeName{get;set;}
公共字符串EmployeePhone{get;set;}
公共字符串EmployeeTitle{get;set;}
}
从控制器返回异常,并在$的catch
块中捕获该异常。发布
方法并向用户显示警报
$.post(url, { 'objdata.....).catch (function (ex){
alert (ex);
});
从控制器返回异常,并在
$的catch
块中捕获该异常。发布
方法并向用户显示警报
$.post(url, { 'objdata.....).catch (function (ex){
alert (ex);
});
假设未找到员工时,您的
SearchEmplByNumber
returnnull
,您可以从操作方法返回不同的结果
public ActionResult GetEmployeeInformation(string objdata)
{
Customerproductdto objGetEmpData = null;
try
{
objGetEmpData = _DataService.SearchEmplByNumber(objdata);
}
catch (Exception ex)
{
logger.Error(ex);
}
if(objGetEmpData!=null)
return PartialView("_Empinformation", objGetEmpData);
return Content("No information found for the employee");
}
如果您想要花哨的html标记而不是简单的消息,请使用这些花哨的标记创建一个新的局部视图并返回该视图
if(objGetEmpData!=null)
return PartialView("_Empinformation", objGetEmpData);
return PartialView("NoDataFoundForEmployee");
假设您在~/Views/Shared
或~/Views/Home/
您的$中不需要if条件。因为您的操作方法总是会返回一些响应,所以在成功回调后发布
根据评论编辑:
我用toastr来回复信息,这就是我想要坚持的
在这种情况下,您可以始终使用以下结构从操作方法返回json响应
{
status="found",
message="some Message for the user",
resultMarkup="somehtmlToDisplayToUser"
}
可以使用下面的helper方法()将视图结果转换为字符串
public string RenderRazorViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View,
ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
现在在你的行动方法中
public ActionResult GetEmployeeInformation(string objdata)
{
Customerproductdto objGetEmpData = null;
try
{
objGetEmpData = _DataService.SearchEmplByNumber(objdata);
}
catch (Exception ex)
{
logger.Error(ex);
return Json(new { status="error", message="System Error!" });
}
if(objGetEmpData!=null)
{
var h= RenderRazorViewToString("_Empinformation", objGetEmpData);
return Json(new { status="found", resultMarkup = h });
}
return Json(new { status="notfound", message="Employee not found" });
}
现在,在$.post方法的回调中,检查json响应的status属性值并显示标记或消息
$.post(url, { 'objdata': getdata }, function (data) {
if (data.status==="found") {
$('#mainYourinformation').html(data.resultMarkup);
}
else
{
alert(data.message);
// or call the toastr method here
// toastr.error(data.message, 'Not found')
}
});
假设未找到员工时,您的SearchEmplByNumber
returnnull
,您可以从操作方法返回不同的结果
public ActionResult GetEmployeeInformation(string objdata)
{
Customerproductdto objGetEmpData = null;
try
{
objGetEmpData = _DataService.SearchEmplByNumber(objdata);
}
catch (Exception ex)
{
logger.Error(ex);
}
if(objGetEmpData!=null)
return PartialView("_Empinformation", objGetEmpData);
return Content("No information found for the employee");
}
如果您想要花哨的html标记而不是简单的消息,请使用这些花哨的标记创建一个新的局部视图并返回该视图
if(objGetEmpData!=null)
return PartialView("_Empinformation", objGetEmpData);
return PartialView("NoDataFoundForEmployee");
假设您在~/Views/Shared
或~/Views/Home/
您的$中不需要if条件。因为您的操作方法总是会返回一些响应,所以在成功回调后发布
根据评论编辑:
我用toastr来回复信息,这就是我想要坚持的
在这种情况下,您可以始终使用以下结构从操作方法返回json响应
{
status="found",
message="some Message for the user",
resultMarkup="somehtmlToDisplayToUser"
}
可以使用下面的helper方法()将视图结果转换为字符串
public string RenderRazorViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View,
ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
现在在你的行动方法中
public ActionResult GetEmployeeInformation(string objdata)
{
Customerproductdto objGetEmpData = null;
try
{
objGetEmpData = _DataService.SearchEmplByNumber(objdata);
}
catch (Exception ex)
{
logger.Error(ex);
return Json(new { status="error", message="System Error!" });
}
if(objGetEmpData!=null)
{
var h= RenderRazorViewToString("_Empinformation", objGetEmpData);
return Json(new { status="found", resultMarkup = h });
}
return Json(new { status="notfound", message="Employee not found" });
}
现在,在$.post方法的回调中,检查json响应的status属性值并显示标记或消息
$.post(url, { 'objdata': getdata }, function (data) {
if (data.status==="found") {
$('#mainYourinformation').html(data.resultMarkup);
}
else
{
alert(data.message);
// or call the toastr method here
// toastr.error(data.message, 'Not found')
}
});
我用toastr来回复信息,这就是我想要坚持的。谢谢,我真的不想再创建一个局部视图。我希望主窗体仍在页面上,并且警报显示“未找到任何信息”。我正在使用toastr返回消息,这正是我想要坚持的。谢谢,我真的不想再创建一个局部视图。我希望主窗体仍在页面上,并且警报显示“未找到任何信息”