我有一个下拉列表(telerik下拉列表),对于每个选项,我都会从控制器中调用不同的局部视图。
onChange = function (e)
{
var product = e.value;
if (product)
{
$.post( myUrl,
{ CodigoProduto : product }, // passing the product to my controller
function (retorno) {
// insert the partial view in a div
$('#AreaGenerica').html(retorno);
}
);
}
}
第一个选项返回包含javascript代码的部分视图
<script type=\"text/javascript\">
function PartialViewFunction () {
alert("test");
}
</script>
<h2>Option A</h2>
,第二个选项返回一个没有任何javascript代码的局部视图 在我看来,我在局部视图中调用该函数
ViewFunction = function () {
// check if the function 'PartialViewFunction' exists.
if (typeof PartialViewFunction === "function")
{
PartialViewFunction();
}
};
我的问题是,如果我选择第一个选项然后第二个“PartialViewFunction”仍然被调用但不应该因为它不存在于第二个局部视图中。
我试图在answer之后删除包含我的部分视图的div,但它不起作用。
提前致谢,我希望你能理解我的英语。
编辑:
@(Html.Telerik().DropDownList()
.Name("grpAutorizacaoPublicacao")
.SelectedIndex(0)
.Effects(e => e.Opacity())
.ClientEvents(e =>
{
e.OnChange("onChange");
})
.DataBinding(db => db.Ajax().Select("_ListaGrupoAutorizacao", "Publicador")))
答案 0 :(得分:0)
作为一般规则,我会避免在部分视图中包含JavaScript。您可以搜索advice。这可能意味着重构您的JS是通用的,并且始终从视图中包含。我认为,这样的设计模式可以解决您的问题,或者至少使其更易于理解和修复。
或者,似乎您可能需要将onChange函数限制为仅第一个select元素。您显示的代码并未明确调用onChange事件的内容。您可以在第一次选择之前和之后包含select元素的html。