2013-08-29 148 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。

我會建議重新命名這些函數(例如,把它們放到'命名空間'中)以避免衝突。

此外,您提供的代碼片段幾乎不提供任何關於實際問題的信息。