MVC 3加载/卸载部分视图

时间:2013-08-29 19:38:47

标签: jquery asp.net-mvc-3 jquery-mobile

我是MVC的新手。我正在使用MVC3。我创建了三个部分视图,这些视图在多个其他视图中共享。 所以我在单独的div控件中加载每个局部视图

<div data-role="content" id="div_parent" style="background-color: #454545"
        <div id="div1" style="display:none">
            @Html.Partial("_View1")
        </div>
        <div id="div2" style="display:none;">
            @Html.Partial("_View2")
        </div>
        <div id="div3" style="display:none">
            @Html.Partial("_View3")
        </div>
</div>

我隐藏了

上的所有观点
$(document).ready(function () {

            $("#div1").hide();
            $("#div2").hide();
            $("#div3").hide();

        }); // end of change 

    });    

在选择选项上我显示各自的观点

<select id="views" data-mini="true" data-native-menu="false">
                 <option value="view1" data-mini="true">view1</option>
                 <option value="view2" data-mini="true">view2</option>
                 <option value="view3" data-mini="true">view3</option>
 </select>





function ShowView(viewType) 
{
      $("#div1").show();
      $("#div2").hide();
      $("#div3").hide();
}

但问题是在所有3个视图中我都有相同名称的javascript函数,所以当我点击view1上的按钮时,它调用了view2或view3的javascript函数。所以eventhough divs隐藏javascripts函数仍然加载在html页面上。 这是一种情况。还有其他问题。所以我的问题是如何避免这种情况。 如何加载/卸载视图,以便它不会在视图中呈现整个html,只是隐藏它。

2 个答案:

答案 0 :(得分:0)

要避免这种情况,请确保您有单个javascript函数,该函数将接受该值作为参数和基础,您可以隐藏或显示相应的div

例如:这只是一个原型

function ShowView(id) 
{
  switch(id){
  case "div1" :
     $("#div1").show();
     $("#div2").hide();
     $("#div3").hide();  
     break;  
  .... // Add other cases
  }
}    

答案 1 :(得分:0)

据我了解您的问题,您在每个部分视图中都有JavaScript函数,当您同时加载它们时,会出现命名冲突,因为函数的名称相同。

您无法轻松“卸载”或“隐藏”或“取消执行”您加载的JavaScript。

我建议重命名函数(例如,将它们放入'命名空间')以避免冲突。

此外,您提供的代码段几乎没有提供有关您遇到的实际问题的信息。