0

我是 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 函数。因此,即使 div 是隐藏的,javascript 函数仍会加载到 html 页面上。这是一种情况。还有其他问题。所以我的问题是如何避免这种情况。如何加载/卸载视图,以便它不会在视图中呈现整个 html 而只是隐藏它。

4

2 回答 2

0

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

例如:这只是一个原型

function ShowView(id) 
{
  switch(id){
  case "div1" :
     $("#div1").show();
     $("#div2").hide();
     $("#div3").hide();  
     break;  
  .... // Add other cases
  }
}    
于 2013-08-30T06:18:38.893 回答
0

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

您不能轻易地“卸载”或“隐藏”或“取消执行”已加载的 JavaScript。

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

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

于 2013-09-04T20:02:56.800 回答