我有一个主要的全局布局文件,在我的一个菜单项中,我链接到一个服务目录,该目录具有从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"> @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菜单的局部视图。
关于如何链接到该局部视图但不丢失主要布局的任何想法?