在我的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
而是of:mylocalhost/Home/Average
,它被指定为在我的脚本中发送POST的url。
以下是“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和/或如何纠正它的想法?
答案 0 :(得分:1)
在你的ajax帖子中使用urlhelper
url: '@Url.Action("Average","Home")',