簡體   English   中英

Java局部視圖

[英]Partial view with Javascript

我有一個下拉列表(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”,但不應這樣做,因為它不存在於第二個局部視圖中。
我嘗試按照此答案刪除包含我的部分視圖的div,但是它不起作用。

在此先感謝您,我希望您能理解我的英語。

編輯:

 @(Html.Telerik().DropDownList()
        .Name("grpAutorizacaoPublicacao")
        .SelectedIndex(0)
        .Effects(e => e.Opacity())
        .ClientEvents(e =>
            {
                e.OnChange("onChange");
            })
        .DataBinding(db => db.Ajax().Select("_ListaGrupoAutorizacao", "Publicador")))

通常,我會避免在局部視圖中包含JavaScript。 您可以搜索有關此的建議 這可能意味着將您的JS重構為通用的,並且始終從正確的角度來看已包括在內。 我認為,這樣的設計模式將解決您的問題,或者至少使它更易於理解和修復。

另外,似乎您可能需要將onChange函數限制為僅第一個select元素。 您顯示的代碼無法明確說明調用onChange事件的原因。 您可以在進行第一次選擇之前和之后包含select元素的html。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM