链接到另一个局部视图内的局部视图

时间:2015-04-01 06:46:20

标签: jquery ajax asp.net-mvc

我有一个主要的全局布局文件,在我的一个菜单项中,我链接到一个服务目录,该目录具有从Model生成的自己的sidemenu。以下是该视图的简化版本:

@model IEnumerable<Service>
<div class="row">
        <div class="col-xs-4">
            <div class="list-group">
                <ul class="service-menu-list">
                    @foreach (var item in Model)
                    {
                        <li>
                            <a href="#@item.Id" class="service-menu-link service-menu-item" id="serviceItem-@item.Id">
                                <i class="service-menu-list-icon fa fa-chevron-right"></i>
                                <span class="service-menu-list-text">&nbsp;@item.Name</span>
                            </a>
                        </li>
                    }
                </ul>
            </div>
        </div>

        <div id="ServicesMainContainer" class="col-xs-8">
            @Html.Partial("_ServicesStart")
        </div>

此侧面菜单将根据您在菜单中点击的项目生成右侧的部分视图。我使用jquery ajax调用来管理它,如下所示:

$(document).on("click", ".service-menu-link", function(e) {
    e.preventDefault();

    var itemID = $(this).attr("id");
    var container = $("#ServicesMainContainer");
    var href = {
        Href: $(this).attr("href")
    }
    removeActiveCLass();
    addActiveClass(itemID);

    $.ajax({
        url: "@Url.Action("_ShowService")",
        type: "POST",
        cache: false,
        dataType: "html",
        contentType: "application/json",
        data: JSON.stringify(href),
        error: function(jqXHR, textStatus, errorThrown) {
            alert("ERROR: " + errorThrown.text());
        },
        success: function(result) {
            container.html(result).show();

        }
    });
});

这里也是主服务页面的控制器:

public ActionResult Services()
    {
        var db = new IdentityDb();
        var serviceList = db.Services.ToList();
        return View("Services", serviceList);
    }

......我的部分观点:

public ActionResult _ShowService(string href)
        {
            if (href == "#home")
            {
                return PartialView("_ServicesStart");
            }
            else
            {
                var db = new IdentityDb();
                var stringId = href.Substring(href.IndexOf("#") + 1);
                var id = Convert.ToInt32(stringId);

                var service = db.Services.FirstOrDefault(s => s.Id == id);

                return PartialView("_ShowService", service);
            }
        }

我的问题是我想从索引页面链接到特定服务,这意味着我想要使用菜单加载“服务”页面,但特定服务已经可见。 如果我链接到我的服务操作,我来到服务目录的起始区域,我无法链接到我的_ShowService部分视图,因为它只显示没有任何css,布局和Servicecatalog菜单的局部视图。

关于如何链接到该局部视图但不丢失主要布局的任何想法?

0 个答案:

没有答案