Jquery 如何根据控制器的查询结果显示警报?

Jquery 如何根据控制器的查询结果显示警报?,jquery,sql,asp.net-mvc-4,Jquery,Sql,Asp.net Mvc 4,我从一个视图通过ajax调用控制器中的一个方法。此方法运行一个查询,查看通过ajax传递给该方法的值是否位于数据库中。我需要的结果是,如果找到该值,则向用户显示警报。我该怎么做 控制器: [HttpPost] public ActionResult ScannerProcess(string jobnumber, string programname, string description) { try { var _process = new ScannerPr

我从一个视图通过ajax调用控制器中的一个方法。此方法运行一个查询,查看通过ajax传递给该方法的值是否位于数据库中。我需要的结果是,如果找到该值,则向用户显示警报。我该怎么做

控制器:

[HttpPost]
public ActionResult ScannerProcess(string jobnumber, string programname, string description)
{
    try
    {
        var _process = new ScannerProcess();
        _process.JobNumberExist(jobnumber);
    }
    catch (Exception e)
    {
        Debug.WriteLine("ERROR: " + e.Message);
        throw;
    }

    return null;
}
方法:

public void JobNumberExist(string jobnumber)
{
    using (var ctx = new Scanner())
    {
        bool results = false;

        var sql = ctx.Database.SqlQuery<tScanner>(@"SELECT * FROM  tScanner
                            WHERE  (JobNumber = @jobnumber)"
            , new SqlParameter("@jobnumber", jobnumber)).ToList();

        if (sql.Count > 0)
        {
            //Display alert on view that job number was found
        }
    }
}

从控制器操作返回JsonResult,如下所示:

[HttpPost]
public ActionResult ScannerProcess(string jobnumber, string programname, string description)
{
    try
    {
        var _process = new ScannerProcess();
        var foundNumber = _process.JobNumberExist(jobnumber);
        // If you don't want to add status message in Action as its "view" specific, you can add message based on combination of DidSucceed and foundNumber property check in javascript as shown below.
        var message = foundNumber ? "Number Found Successfully" : "Number not found";
        return Json(new { DidSucceed = true, status = "success", message = message, foundNumber = foundNumber }, JsonRequestBehavior.AllowGet);

    }
    catch (Exception e)
    {
        Debug.WriteLine("ERROR: " + e.Message);
        // throw; // Since this action is invoked via AJAX, I would say throwing exceptions is not a good practice.
        return Json(new { DidSucceed = false, status = "error", message = "Unknown Exception Occured." }, JsonRequestBehavior.AllowGet);
    }

    return null;
}
修改JobNumberList方法的签名只是一个旁注,这样运行查询是不好的做法。请参考DBContext,了解如何执行查询以返回true或false

public **bool** JobNumberExist(string jobnumber)
{
    using (var ctx = new Scanner())
    {
        bool results = false;

        var sql = ctx.Database.SqlQuery<tScanner>(@"SELECT * FROM  tScanner
                            WHERE  (JobNumber = @jobnumber)"
            , new SqlParameter("@jobnumber", jobnumber)).ToList();

        return sql.Count > 0 ;
    }
}
public **bool** JobNumberExist(string jobnumber)
{
    using (var ctx = new Scanner())
    {
        bool results = false;

        var sql = ctx.Database.SqlQuery<tScanner>(@"SELECT * FROM  tScanner
                            WHERE  (JobNumber = @jobnumber)"
            , new SqlParameter("@jobnumber", jobnumber)).ToList();

        return sql.Count > 0 ;
    }
}
$.ajax({
    type: "POST",
    url: "ScannerProcess",
    contentType: "application/json; charset=utf-8",
    data: { programname: $('#programName').val(), jobnumber: $('#jobNumber').val(), description: $('#description').val() }
})
.done(function (data, textStatus, jqXHR) {
    if ($.isPlainObject(data) && !data.DidSucceed) {
        // Display error message in your respective DIV
    }
    else {
        if (data.foundNumber === true) {
           // Display your own success message or display data.message which is added in MVC action   
        }
        else { 
           // Display your own error message or display data.message which is added in MVC action
        }
    }
})
.fail(function (jqXHR, textStatus, errorThrown) {

})
.always(function (jqXHR, textStatus, errorThrown) {

});