我正在使用下面的jQuery代码来搜索员工 员工存在,表中的其他字段将被返回。
如果找不到员工,我希望能够向用户发送提醒。 我怎样才能做到这一点?
$(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(string objdata)
{
Customerproductdto objGetEmpData = null;
try
{
objGetEmpData = _DataService.SearchEmplByNumber(objdata);
}
catch (Exception ex)
{
logger.Error(ex);
}
return PartialView("_Empinformation", objGetEmpData);
}
public class Customerproductdto
{
public string EmployeeNumber { get; set; }
public string EmployeeName { get; set; }
public string EmployeePhone { get; set; }
public string EmployeeTitle { get; set; }
}
答案 0 :(得分:2)
假设您找不到员工时SearchEmplByNumber
返回null
,您可以从操作方法中返回不同的结果。
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");
假设您在NoDataFoundForEmployee.cshtml
或~/Views/Shared
~/Views/Home/
的视图
您的$.post
成功回调中不需要if条件,因为您的操作方法将始终返回一些响应。
编辑:根据评论
我正在使用toastr来返回消息,这就是我想要坚持的内容
在这种情况下,您可以始终使用以下结构从
{
status="found",
message="some Message for the user",
resultMarkup="somehtmlToDisplayToUser"
}
您可以使用以下帮助方法(took from this answer)将您的查看结果转换为字符串
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')
}
});
答案 1 :(得分:1)
从控制器返回异常并在catch
$.post
方法块中捕获该异常,并向用户显示警告。
$.post(url, { 'objdata.....).catch (function (ex){
alert (ex);
});