【发布时间】:2016-05-29 17:11:56
【问题描述】:
这里是相关的查看cshtml代码
<tbody>
@foreach (var task in Model.TasksSummaryList)
{
<tr>
<th onclick="OnPatientSelected('@task.PatientID')">@task.PatientName</th>
<th>@task.Status</th>
<th>@task.TaskCount</th>
<th>@task.MostRecentTask</th>
</tr>
}
</tbody>
这是包含 OnPatientSelected 的外部 javascript 文件
function OnPatientSelected(selectedPatientID) {
$.ajax({
type: "POST",
url: "TasksSummary/TaksSummaryDetailsView",
data: { selectedPatientID: selectedPatientID },
error: function () {
alert("fail");
},
success: function(){
alert("success");
}
});
}
这总是显示成功,但从不调用我想要的控制器 ActionMethod
[AllowAnonymous]
[HttpPost]
public ActionResult TasksSummaryDetailsView(/*data from view*/string selectedPatientID)
{
int i = 09;
//Received PatientID from View (Client)
//Browse to the appropriate view
return View();
}
【问题讨论】:
-
你能在你的动作方法中保留一个断点并检查它是否被命中
-
您如何验证该操作没有被调用?另外请注意,提供的
url是relative to the current page's address,可能不是您期望的路径。 -
尝试使用 fiddler 查看正在发出的调用和输出。另外,直接在浏览器中尝试 url 看看它是否有效:
.../TasksSummary/TaksSummaryDetailsView?selectedPatientID="yourvalue" -
所以它在浏览器中工作的唯一方法是如果我删除方法名称顶部的 [HttPost] 标签,但是当我放置它时,我收到一个错误说 ActionName 不存在..... .. 在控制器“eRxWeb.Areas.CodeAThonMVC.Controllers.TasksSummaryController”上找不到公共操作方法“TasksSummaryDetailsView”。
标签: javascript asp.net-mvc asp.net-mvc-4 asp.net-ajax