2014-03-24 41 views
0

我有兩個DropDownListFor的,第二個的內容取決於第一個。爲什麼我不能把一個DropDownListFor在div內容?

我試圖刷新DIV內容(列表)每一個不同的選擇,在首次提出用JavaScript代碼的時間:

function onUpdate() { 
    $("#MyDiv").html('<%= Html.DropDownListFor(model => model.PeriodSelected, Model.PeriodSelectList) %>'); 
} 

而且DIV很簡單:

<div id="MyDiv" class="editor-field" /> 

選擇列表的在視圖模型依賴於從第一個列表中所選項目:

public SelectList PeriodSelectList 
    { 
     get 
     { 
      var list = this.Versions.ToList().Where(fv => fv.DateSubmitted.Year == PeriodSelected); 
      return new SelectList(list, "Id", "Version"); 
     } 
    } 

可惜運行這會導致:

微軟JScript運行時錯誤:

$("#MyDiv").html('<%= Html.LabelFor(...) %>'); 

爲的onUpdate:無法完成,由於操作錯誤80020101.

不過,我已經嘗試使用()函數和工作正常,所以問題似乎與DropDownListFor。

那麼,爲什麼這不起作用?謝謝

回答

0

我不知道錯誤,afaik它是關於Internet Explorer和解析錯誤,但。

下拉列表標記實際上只對響應生成一次,所以這個字符串將是常量。

<%= Html.DropDownListFor(model => model.PeriodSelected, Model.PeriodSelectList) %>將一直<select>...</select>一直。

您需要重新考慮您的網站的工作流程以預先加載所有需要的信息,然後僅使用JavaScript進行工作。因此,您需要使用javascript在瀏覽器中過濾期間,並將asp.net mvc僅作爲數據源。

或者以某種方式使用ajax重新生成服務器上的下拉列表標記。簡而言之,在ASP.NET MVC中,您無法輕鬆混合使用JavaScript和.NET代碼。我認爲,這是正確的做法。但是,如果你想這麼做是出於某種原因:

there're WebForms.

+0

謝謝!我的SelectList現在被設置在控制器中(而不是VM),並且我通過ajax post進行刷新。 – Chris

相關問題