0

在我的 C# MVC4 应用程序中,我有两个主要视图:“Index”和“Index_Perm”。登录用户的角色决定了呈现这些视图中的哪一个。“Index”包含一个名为“PMain”的视图,Index_Perm 包含一个名为“PMain_Lim”的视图。“PMain”和“PMain_Lim”包含另一个名为“Analysis”的局部视图。在“Analysis”内部,我有这个脚本:

<script type="text/javascript" charset="utf-8">
    $(document).ready(function () {
        $('#SubmitAverage').click(function () {
            var $form = $('#form1');
            $.ajax({
                type: "POST",
                url: "Home/Average",
                data: $form.serialize(),
                success: function () {
                    alert("Edit successful");
                },
                error: function () {
                    alert('failure');
                }
            });
        });
    });
    </script>

我的问题是,当“索引”是正在访问的主视图时,单击“提交”按钮时该脚本会正确运行。但是,当“Index_Perm”是主视图时,单击按钮时,AJAX 发布失败并出现错误:The resource you are looking for has been removed, had its name changed, or is temporarily unavailable. The directory or file specified does not exist on the Web server.在 Firebug 中进行一些调查后,我看到它正在尝试访问: mylocalhost/Home/Index_Perm/Home/Average而不是:mylocalhost/Home/Average指定为要发送的 url我脚本中的 POST。以下是“PMain”和“PMain_Lim”中相同的代码的适用部分,其中包含与脚本相关的按钮:

    <div id="Analysis" title="Analysis">
        @Html.Action("Analysis", "Home", Model)
    </div>
</section>
<section>
         <h3>
            <button class="btn" id="SubmitAverage" value ="SubmitAverage" name="action:SubmitAverage" type="button">Submit Averages</button>
        </h3>
    </section>
<section>
    <div id="OtherView" title="OtherView" class="OtherChanges">
        @Html.Action("OtherView", "Home", (string)ViewBag.SearchKey)
    </div>
</section>

有什么想法为什么它忽略了我指定为在 JQuery AJAX POST 中使用的 URL 和/或如何更正它?

4

1 回答 1

1

在您的 ajax 帖子中使用 urlhelper

url: '@Url.Action("Average","Home")',
于 2013-04-24T03:07:59.207 回答