Javascript 如何根据用于确定显示哪个按钮的值不为';直到它';它点击了吗?

Javascript 如何根据用于确定显示哪个按钮的值不为';直到它';它点击了吗?,javascript,jquery,asp.net-core-mvc,Javascript,Jquery,Asp.net Core Mvc,如果有人有更好的标题,请随意编辑。我从一位即将离开公司的开发人员那里继承了一个项目,我正绞尽脑汁试图找到现有代码提供的问题的解决方案 视图中的代码: <div> <table class="table"> <tr> <th class="border-bottom border-top-0">Action</th>

如果有人有更好的标题,请随意编辑。我从一位即将离开公司的开发人员那里继承了一个项目,我正绞尽脑汁试图找到现有代码提供的问题的解决方案

视图中的代码:

<div>
            <table class="table">
                <tr>
                    <th class="border-bottom border-top-0">Action</th>
                </tr>
                @foreach (Step actionItem in Model.Steps)
                {
                    @if (actionItem.HasRun == false)
                    {
                        <tr class="border-top-0">
                            <td>
                                @if (actionItem.ReturnsInfo == true)
                                {
                                    <input type="button" value="Run Check" onclick="loadProcessingFeedbackPartial('@actionItem.StepID', '@Model.Client.DatabaseConnectionString' )" />
                                }
                                else
                                {
                                    <input type="submit" value="Run Check" name="btnRunStoredProcedure" asp-action="CallStepStoredProcedure" asp-route-StepID="@actionItem.StepID" asp-route-StepCompleted="@actionItem.HasRun" />
                                }
                            </td>
                        </tr>
                        break;
                    }
                }
            </table>
        </div>
视图中的按钮有一个Onclick事件,该事件转到Javascript函数,该函数使用调用服务方法的控制器的数据加载部分视图。这就是问题所在。如果没有返回行,我希望完全绕过正在绘制的部分

因此,我对控制器的操作进行了一点修改,以包含一个条件,即如果
feedbackDetails.Data
有0行,则只需调用与服务不同的方法,按正常方式处理,但返回视图而不是部分

public IActionResult ViewProcessingFeedBackPartial(int StepId, string DatabaseConnectionString, int ClientId)
    {
        FeedbackDetails feedbackDetails = new FeedbackDetails();

        feedbackDetails.Data = _clientProcessingService.GetProcessingFeedbackDetails(StepId, DatabaseConnectionString);
        if(feedbackDetails.Data.Rows.Count == 0)
        {
            _clientProcessingService.RunProcessStepConfirmation(DatabaseConnectionString, StepId, ClientId, "No information returned, automatically proceeding to next step.");
            return RedirectToAction("Processing", new { Id = ClientId });
        }

        return PartialView("_ViewFeedback", feedbackDetails);
    }
这“起作用了”,除了在视图中它在加载分部的Javascript函数中被调用之外,视图在该分部中返回,而不是返回视图

但我不确定如何解决这个问题,因为如果不先单击按钮并尝试用数据填充该集合,我不知道它是空的(跳过部分)还是有行的(并绘制部分)

我尝试创建一个返回布尔值的中间控制器操作,并尝试在javascript函数中使用该操作的结果来绘制部分或基于布尔值跳过它,但我并不真正擅长javascript,所以我无法让它工作

我不确定解决这个问题的方法是否包括创建逻辑来显示多个按钮,这些按钮被路由到不同的控制器动作或javascript函数,或者只是通过javascript来处理


解决这个问题的好办法是什么

@Mkalafut,您的jQuery函数正在将控制器结果直接加载到“#processingFeedbackPartialDiv”中,而不管收到的结果如何。最好先把它拉到一个变量中,然后添加一些简单的逻辑来决定下一步要做什么。控制器可能会通过返回易于识别的空结果来提供帮助。 e、 g

记住,jQueryLoad和get都只是ajax的简写功能,因此如果需要,您可以进一步定制代码以获得所需的灵活性。

public IActionResult ViewProcessingFeedBackPartial(int StepId, string DatabaseConnectionString)
    {
        FeedbackDetails feedbackDetails = new FeedbackDetails();

        feedbackDetails.Data = _clientProcessingService.GetProcessingFeedbackDetails(StepId, DatabaseConnectionString);

        return PartialView("_ViewFeedback", feedbackDetails);
    }
public IActionResult ViewProcessingFeedBackPartial(int StepId, string DatabaseConnectionString, int ClientId)
    {
        FeedbackDetails feedbackDetails = new FeedbackDetails();

        feedbackDetails.Data = _clientProcessingService.GetProcessingFeedbackDetails(StepId, DatabaseConnectionString);
        if(feedbackDetails.Data.Rows.Count == 0)
        {
            _clientProcessingService.RunProcessStepConfirmation(DatabaseConnectionString, StepId, ClientId, "No information returned, automatically proceeding to next step.");
            return RedirectToAction("Processing", new { Id = ClientId });
        }

        return PartialView("_ViewFeedback", feedbackDetails);
    }
$.get("url", { stepId, databaseConnectionString }, function (data) {
    var result = data;
    // Some example conditional logic - adjust as required
    if (result != null){
        $("#processingFeedbackPartialDiv").html(result);
        $("#confirmButton").removeAttr("style");
    }
});