2013-08-29 121 views
0

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

<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函数。所以尽管divs是隐藏的javascripts函数仍然加载在html页面上。 这是一种情况。还有其他问题。所以我的问题是如何避免这种情况。 如何加载/卸载视图,以便它不会在视图中呈现整个html并隐藏它。

+0

因此,你想只渲染可见的div,或者修复你的javascript,以便在选择更改值时显示/隐藏正确的div。 –

+0

似乎有JavaScript代码丢失。你说它从view2或view3调用javascript代码(我认为你的意思是部分),但你没有显示代码。 –

+0

我想加载唯一可见div的javascript函数 – user1774777

回答

0

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

为如:这只是一个原型

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

Jatin,是的,我只有一个Javascript函数来隐藏/显示div – user1774777

0

据我了解你的问题,你在每个局部视图中都有JavaScript函数,并且当你同时加载它们时,会有一个命名冲突,因为函数的命名是相同的。

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

我会建议重新命名这些函数(例如,把它们放到'命名空间'中)以避免冲突。

此外,您提供的代码片段几乎不提供任何关于实际问题的信息。