0

基本上我有 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。希望这是有道理的

4

2 回答 2

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>
于 2013-10-02T09:43:58.703 回答
0

为什么你没有这样的东西(如果它涉及更改部分视图/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});
        }

希望能帮助到你

编辑:但当然,如果您经常这样做,我建议将其放入一个静态方法中,以将部分视图转换为字符串

于 2013-10-02T02:16:57.267 回答