You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Controller查询结果在页面弹出Alert提示?

How to Show Alert When Job Number Exists via AJAX

Got it, let's adjust your code step by step to get the alert working when the job number exists in the database. The core idea is to pass the existence status from the controller back to the frontend, then trigger the alert based on that status.

1. Modify the JobNumberExist Method

Your original method is void—we need it to return a boolean indicating if the job number exists. Also, using existence checks (instead of fetching full records) is more efficient:

public bool JobNumberExist(string jobnumber)
{
    using (var ctx = new Scanner())
    {
        // Option 1: Raw SQL (check existence without fetching full rows)
        bool exists = ctx.Database.SqlQuery<bool>(
            @"SELECT CASE WHEN EXISTS(SELECT 1 FROM tScanner WHERE JobNumber = @jobnumber) THEN 1 ELSE 0 END",
            new SqlParameter("@jobnumber", jobnumber)
        ).FirstOrDefault();

        // Option 2: EF LINQ (cleaner if you have a DbSet for tScanner)
        // bool exists = ctx.tScanner.Any(s => s.JobNumber == jobnumber);

        return exists;
    }
}

2. Update the Controller Action

Instead of returning null, we'll return a JSON object that carries the existence status (and error info if something goes wrong):

[HttpPost]
public ActionResult ScannerProcess(string jobnumber, string programname, string description)
{
    try
    {
        var _process = new ScannerProcess();
        bool jobExists = _process.JobNumberExist(jobnumber);
        
        // Send status back to frontend as JSON
        return Json(new { IsExists = jobExists });
    }
    catch (Exception e)
    {
        Debug.WriteLine("ERROR: " + e.Message);
        // Return error details for frontend handling
        return Json(new { IsError = true, Message = e.Message });
    }
}

3. Adjust the AJAX Call

In the frontend, we'll check the JSON response from the controller and show the alert when IsExists is true. Also, use @Url.Action to avoid hardcoding the action path:

$.ajax({
    type: "POST",
    url: "@Url.Action("ScannerProcess")", // Reliable way to get the action URL
    data: {
        programname: $('#programName').val(),
        jobnumber: $('#jobNumber').val(),
        description: $('#description').val()
    },
    dataType: "json" // Tell jQuery we expect a JSON response
})
.done(function (data, textStatus, jqXHR) {
    // Handle errors first
    if (data.IsError) {
        alert("Oops, something went wrong: " + data.Message);
        return;
    }
    
    // Show alert if job number exists
    if (data.IsExists) {
        alert("Job number already exists in the database!");
    }
})
.fail(function (jqXHR, textStatus, errorThrown) {
    alert("Request failed: " + textStatus);
})
.always(function (jqXHR, textStatus, errorThrown) {
    // Optional: Add cleanup logic here (e.g., reset form fields)
});

Key Notes:

  • Avoid returning null from the controller: The frontend needs a meaningful response to act on. JSON is the perfect format for this.
  • Use efficient queries: Checking for existence with EXISTS (SQL) or Any (LINQ) is faster than fetching all matching records.
  • Handle errors: Always include error handling in both backend and frontend to give users clear feedback.

内容的提问来源于stack exchange,提问作者SGekko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:41:22