[英]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.