我有一个asp.net MVC应用程序。我正在尝试编码,以便根据选择的3个按钮之一加载不同的部分视图。我正在尽力关注这篇文章http://forums.asp.net/t/1981845.aspx?Load+different+partial+views+based+on+the+user+action+ 但它目前返回错误如下:
类型' System.InvalidOperationException'的例外情况发生在System.Web.Mvc.dll中但未在用户代码中处理 附加信息:部分视图' UserAccountInfoView'找不到或没有视图引擎支持搜索的位置。搜索了以下位置:
我想使用aspx而不是rajor。 视图如下:
<script>
$(function() {
$('#InfoButton').on("click", function() {
$.get('@Url.Action("InfoAction", "HardwareRequisitionController")', function (data) {
$( "#myContentView" ).html( data );
});
$('#NotesButton').on("click", function() {
$.get('@Url.Action("NotesAction", "HardwareRequisitionController")', function (data) {
$( "#myContentView" ).html( data );
});
$('#OrdersButton').on("click", function() {
$.get('@Url.Action("OrdersAction", "HardwareRequisitionController")', function (data) {
$( "#myContentView" ).html( data );
});
});
});
});
});
</script>
<div class="row">
<div class="col-lg-12" id="account-subnavigation">
<div class="btn-group" style=" margin-bottom:10px; margin-left:10px;">
<button class="btn btn-info" style="width:120px" id="InfoButton">Info</button>
<button class="btn btn-info" style="width:120px" id="NotesButton">Notes</button>
<button class="btn btn-info" style="width:120px" id="ordersButton">Orders</button>
</div>
</div>
</div>
<div class="row" id="myContentView">
<% Html.Partial("UserAccountInfoView "); %>
</div>
HardwareRequisitionController控制器
public ActionResult InfoAction()
{
return PartialView("VoIPSubform1");
}
public ActionResult NotesButton()
{
return PartialView("VoIPSubform2");
}
public ActionResult OrdersButton()
{
return PartialView("VoIPSubform1");
}
答案 0 :(得分:0)
您收到错误的原因是Html.Partial("UserAccountInfoView")
正在尝试呈现名为UserAccountInfoView.aspx
的视图,但该视图不存在。您需要从视图中删除该行。
接下来,$.get()
函数将在浏览器控制台中抛出404 Not Found错误,因为您没有名为HardwareRequisitionControllerConroller
的控制器。您需要修改Url.Action()
方法以从控制器名称中删除"Controller"
并使用aspx语法。
$.get('<% Url.Action("InfoAction", "HardwareRequisition") %>', function (data) {
....
}
不
$.get('@Url.Action("InfoAction", "HardwareRequisitionController")', function (data) {
答案 1 :(得分:0)
Stephon提到你不需要Html.Partial("UserAccountInfoView")
你的标记应该是这样的:
<div class="row" id="myContentView">
</div>
还有一件事:我认为动作名称不正确,它们必须是:NotesButton
,OrdersButton
:
...
$('#NotesButton').on("click", function() {
$.get('@Url.Action("NotesButton", "HardwareRequisitionController")', function (data) {
$( "#myContentView" ).html( data );
});
$('#OrdersButton').on("click", function() {
$.get('@Url.Action("OrdersButton", "HardwareRequisitionController")', function (data) {
$( "#myContentView" ).html( data );
});
});
});