使用Javascript的局部视图

时间:2016-10-04 19:39:54

标签: javascript asp.net-mvc

我有一个下拉列表(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")))

1 个答案:

答案 0 :(得分:0)

作为一般规则,我会避免在部分视图中包含JavaScript。您可以搜索advice。这可能意味着重构您的JS是通用的,并且始终从视图中包含。我认为,这样的设计模式可以解决您的问题,或者至少使其更易于理解和修复。

或者,似乎您可能需要将onChange函数限制为仅第一个select元素。您显示的代码并未明确调用onChange事件的内容。您可以在第一次选择之前和之后包含select元素的html。