我是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,只是隐藏它。
答案 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。
我建议重命名函数(例如,将它们放入'命名空间')以避免冲突。
此外,您提供的代码段几乎没有提供有关您遇到的实际问题的信息。