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");
}
});