MVC在导航栏上显示局部视图点击

时间:2014-08-26 09:39:56

标签: javascript asp.net-mvc-4 partial-views razorengine

我想显示局部视图,当我点击导航栏时点击。我有一个包含左侧菜单的视图。当用户点击导航栏项目时,应显示相应的视图。

我没有得到如何实现这样的观点?

Manage.cshtml

        <div class="row">
            <div class="col-xs-12">
                <div class="page-header">
                    <h1>My Account</h1>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-3">
                <ul class="nav nav-pills nav-stacked nav-stacked-extended">
                    <li class="active">
                        <a id="A3" target="_self" runat="server" href="@Url.Action("Contactinfo", "Account")">Contact Info</a>
                    </li>
                    <li class="">
                        <a id="A4" target="_self" runat="server" href="@Url.Action("changePassword", "Account")">Password</a>
                    </li>
                </ul>
            </div>
            <div class="col-xs-9 ng-scope" data-ng-view="">
                <div class="row row-gap-medium ng-scope">
                    @Html.Partial("Contactinfo")
                </div>
            </div>
        </div>

在上面的代码中,我在Manage.cshtml第一次加载我要显示Contactinfo视图时创建了左侧菜单,即contactinfo,changepassword等。当用户点击密码菜单时,contactinfo会被changedpassword页面更改。请检查以下屏幕截图。 enter image description here

在上图中,您可以看到左侧菜单和相应的页面。当用户点击密码时,我想要的是,视图已更改为password page。目前它显示联系信息页面。我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:0)

在您的要求中,只需在左侧栏中显示链接的部分视图,当用户点击左侧栏中的特定选项时,只需使用jquery从ajax调用加载适当的局部视图,然后替换右侧的html来自ajax电话的html吧。

给你的左侧menues唯一的id然后:

演示:

 $(document).ready(function(){
   $("#menu1").click(function(e){
      e.preventDefault();
      $.ajax({
                url: "/MyController/getdata",
                type: 'GET',
                datatype: 'html',
                data: {  },
                success: function (data) {
                   $("#div1").html('');
                   $("#div1").html(data);

            });
    });
});

Controller(MyController):

[HttpGet]
Public ActionResult getdata(string dropval)
{
//bind model here
return PartialView("mypartialview",model)
}

答案 1 :(得分:0)

我认为你应该通过JavaScript渲染部分内容。

我们说你有<div id="partialView"></div>

然后,当用户点击链接时,你应该运行Ajax查询。

类似的东西:

$.ajax({
            url: $(this).data('yourUrl'),
            type: 'GET',
            cache: false,
            success: function(result) {
                $('#partialView').html(result);
            }
        });

答案 2 :(得分:0)

我也花了一点时间来解决这个问题。

基本上,您希望Controller操作返回部分视图,然后使用Ajax加载返回的部分视图。

JavaScript / Ajax

$.ajax({
            url: '@Url.Action("Action", "Controller")',
            type: 'POST',
            data: { 'viewName': 'password' },
            success: function (data) {
                $('#partial-container').html(data);
            }
        });

控制器返回类型

Public ActionResult GetView(string viewName)
{
    return PartialView(viewName, model);
}

理想情况下,更改您的HTML,以便更容易引用您希望加载部分的div容器

<div class="col-xs-9 ng-scope" data-ng-view="">
                <div class="row row-gap-medium ng-scope">
                    <div id="partial-container">@Html.Partial("Contactinfo")</div>
                </div>
            </div>

答案 3 :(得分:0)

试试这个JS for Clickevent

$(document).on('click', '#anCalcBtn', function () {
$('#anCalcDetail').load('/Home/Contactinfo/');
});

如果我没有错,你试图像This

那样做