以下是每当用户点击我的ASP MVC3 View上的某个图标时,我向控制器发出的Ajax调用。它应该通过名称PopDetails
在控制器中调用一个方法,但是在控制器中设置断点之后我可以看到这没有发生。我尝试使用下面列出的两个网址,但都没有用。由于这是我第一次使用Ajax,我不确定发生了什么。任何想法或建议将不胜感激!
Ajax代码:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script type="text/javascript">
function GetProgramDetails(pgmname) {
var request = $.ajax({
type: 'POST',
url: '~/BatchProgramsContoller/PopDetails',
//url: '~/BatchProgramsContoller/PopDetails',
data: { programName: pgmname },
dataType: 'html'
});
request.done(function (data) {
$('#programExplanation').html(data);
});
}
</script>
来自BatchProgramsController
的方法:
[HttpPost]
public string PopDetails(string programName)
{
BatchPrograms batchprograms = db.BatchPrograms.Find(programName);
if (batchprograms == null) return string.Empty;
StringBuilder s = new StringBuilder();
s.Append(batchprograms.ProgramName + " - " + batchprograms.ShortDescription);
s.Append("<br />Job Names: " + batchprograms.PrdJobName + ", " + batchprograms.QuaJobName );
s.Append("<br /> " + batchprograms.Description);
return s.ToString();
}
答案 0 :(得分:4)
url: '~/BatchProgramsContoller/PopDetails',
应改为
url: '~/BatchPrograms/PopDetails',
或更可能
url: '/BatchPrograms/PopDetails',
答案 1 :(得分:1)
在.net mvc中,通常认为硬编码网址的做法不如上面的答案所示。
我会用
url: '@Url.Action("BatchPrograms", "PopDetails")',
这样,如果你的路由因任何原因而改变,那么mvc url helper会处理它。