2016-10-04 4 views
0

私はドロップダウンリスト(telerik dropdownlist)を持っており、すべてのオプションで私のコントローラから別の部分的なビューを呼び出しています。Javascriptを使用した部分図

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コードなし部分図を返す部分図を返します。私の見解では
私は私の問題は、私は最初のオプションを選択した後、第2場合は、「PartialViewFunction」はまだ呼ばれていることですが、それはそれはdoesnのではないはずなので

ViewFunction = function() { 
     // check if the function 'PartialViewFunction' exists. 
     if (typeof PartialViewFunction === "function") 
     { 
      PartialViewFunction(); 
     } 
    }; 

部分ビュー内の関数を呼び出します第2の部分図の内部に存在する。
私はこのanswerに続いて私の部分的なビューを含むdivを削除しようとしましたが、動作しませんでした。

おかげさまで、私はあなたが私の英語を理解できることを願っています。

編集:私は部分的なビューではJavaScriptを含め避けるだろう一般的なルールとして

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

私は、AJAXを介して取得されたダイアログコンテンツで同じようなことをしていることを知っています。私はあなたの比較で2つの '='記号だけが必要だと思う。 if(typeof initDlg == 'function')initDlg(); – Steve

答えて

0

。あなたはそれについてadviceを検索することができます。これはJSをリファクタリングしてジェネリックであり、常に適切なビューから取り込むことを意味するかもしれません。そのようなデザインパターンは、あなたの問題を解決するか、少なくとも理解して修正することを可能にします。

また、onChange関数を最初のselect要素だけに制限する必要があるようです。あなたが示したコードは、onChangeイベントを呼び出すものを明確にしません。最初の選択が行われる前と後に、select要素のhtmlを含めることができます。

関連する問題