Basiacly我有1个视图,顶部有一个菜单,一个主内容div和一个侧边栏div,所有按钮都将不同的部分视图导入主内容div,现在我希望只导入侧边栏,如果它不同到当前加载的那个(节省加载时间)
@{if (TempData["CurrentSideBar"] != "Standard")
{
<script type="text/javascript">
$('#sidebarmain').load('@Url.Action("Standard", "SideBar")', function () {
$('#loadingAjaxs').hide(); $('#flubestext').show(); window.history.pushState(null, 'title', '/users/');
})
</script>
TempData["CurrentSideBar"] = "Standard";
}}
我试过这个和viewbag并没有用,这是每个主要部分视图的顶部,它从标题按钮进入内容div。希望这是有道理的
答案 0 :(得分:0)
为什么你没有这样的东西(如果它涉及更改partialview / html的按钮):
你可以创建一个链接/按钮并调用一个动作,如果有一个html结果,那么替换视图,如果没有,则不要替换
.cs中的ControllerAction
[ValidateInput(false)]
public JsonResult ControllerAction()
{
string newPartialHtml = "";
using (var sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, "NewPartialViewToLoad");
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData,TempData, sw);
viewResult.View.Render(viewContext, sw);
newPartialHtml= sw.GetStringBuilder().ToString();
}
return Json(new{ doReplace=true, newHtml = newPartialHtml});
}
希望有所帮助
编辑:但是当然如果你这么做了,我建议把它放到一个静态方法中将partialview转换为字符串
答案 1 :(得分:0)
在主视图中添加Javascript变量:
_standard = 0;
在标准边栏中添加:
_standard = 1;
现在更改此代码:
@{if (TempData["CurrentSideBar"] != "Standard")
{
<script type="text/javascript">
$('#sidebarmain').load('@Url.Action("Standard", "SideBar")', function () {
$('#loadingAjaxs').hide(); $('#flubestext').show(); window.history.pushState(null, 'title', '/users/');
})
</script>
TempData["CurrentSideBar"] = "Standard";
}}
这一个:
<script type="text/javascript">
$(document).ready(function(){
if(_standard == 0){
$('#sidebarmain').load('@Url.Action("Standard", "SideBar")', function () {
$('#loadingAjaxs').hide(); $('#flubestext').show(); window.history.pushState(null, 'title', '/users/');
})
_standard = 1;
}
});
</script>