根据用户按钮操作加载不同的部分视图

时间:2015-11-09 00:01:16

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我有一个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");
        }

2 个答案:

答案 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>

还有一件事:我认为动作名称不正确,它们必须是:NotesButtonOrdersButton

...
$('#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 );  
        });  
    });  
});