在我的 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 和/或如何更正它?