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

本文关键字:局部 视图 加载 用户 按钮 操作 | 更新日期: 2023-09-27 18:21:11

我有一个asp.net MVC应用程序。我正在尝试编码,以便根据选择的3个按钮中的任何一个加载不同的局部视图。我正在尽力关注这篇文章http://forums.asp.net/t/1981845.aspx?Load+不同+局部+视图+基于+用户+操作+但它目前返回的错误如下:

System.Web.Mvc.dll中出现类型为"System.InvalidOperationException"的异常,但未在用户代码中进行处理其他信息:未找到部分视图"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>

硬件需求控制器控制器

public ActionResult InfoAction()
        {               
            return PartialView("VoIPSubform1");              
        }
        public ActionResult NotesButton()
        {              
            return PartialView("VoIPSubform2");
        }
        public ActionResult OrdersButton()
        {              
            return PartialView("VoIPSubform1");
        }

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

出现错误的原因是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) {

正如Stephen所提到的,您不需要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 );  
        });  
    });  
});