0

下面是每当用户单击我的 ASP MVC3 视图上的某个图标时我对控制器进行的 Ajax 调用。它应该通过名称调用控制器中的方法PopDetails,但是在控制器中设置断点后,我可以看到这没有发生。我尝试使用下面列出的两个 URL,但都没有工作。因为这是我第一次使用 Ajax,所以我不太确定发生了什么。任何想法或建议将不胜感激!

来自 View 的 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();
    }
4

2 回答 2

4
url: '~/BatchProgramsContoller/PopDetails',

应该改为

url: '~/BatchPrograms/PopDetails',

或更可能

url: '/BatchPrograms/PopDetails',
于 2013-02-13T18:29:28.313 回答
1

在.net mvc 中,硬编码网址通常被认为是不好的做法,如上面的答案中所做的那样。

我会用

url: '@Url.Action("BatchPrograms", "PopDetails")',

这样,如果您的路线因任何原因发生更改,mvc url 助手会处理它。

于 2013-02-14T00:36:03.473 回答