2014-09-03 48 views
0

我的工作目標是在滿足條件1的情況下禁用網頁上的文本框。如何將模型屬性分配給MVC4 EditorFor中的additionalViewData

因此,我創建了一個名爲DoubleTemplate

@model double 

@if (ViewData["IsVisible"] != null) 
{ 
    var IsVisible = (bool)ViewData["Switcher"]; 

    if (IsVisible) 
    { 
     @Html.TextBox(string.Empty,Model) 
    } 
} 

而回到我的網頁視圖模板,這裏是我的代碼來調用這個模板

@Html.EditorFor(m => m.Year1Data, "DoubleTemplate", new {Switcher = m.CurrentProgramYear == 1}) 

錯誤的第2M下稱:

當前上下文中不存在名稱'm'

所以我的問題是如何將我的模型屬性分配給additionalViewData在EditorFor

順便說一句,這裏是EnditorFor在MSDN上

語法
public static MvcHtmlString EditorFor<TModel, TValue>(
    this HtmlHelper<TModel> html, 
    Expression<Func<TModel, TValue>> expression, 
    string templateName, 
    Object additionalViewData 
) 

回答

1

假設CurrentProgramYear在你的模式,改變屬性

.... new {Switcher = m.CurrentProgramYear ... 

.... new {Switcher = Model.CurrentProgramYear ... 
+0

嗨@Stephen,它現在工作:) thx。但是,如果代碼(在網頁上)處於循環中,並且我需要的屬性位於MyViewModel集合中的MyViewModel實例(我們稱之爲MyList),那麼在這種情況下,我不會能夠使用Model,我們如何解決這個問題? – Franva 2014-09-03 01:41:14

+0

我不確定我是否理解 - 您需要發佈更多的視圖,包括循環。但爲什麼你會這樣做,而不是簡單的'@if(Model.CurrentProgramYear == 1){@ Html.TextBoxFor(m => m.Year1Data)}'? – 2014-09-03 01:46:04

+0

您好斯蒂芬,因爲我有超過50個相同的代碼部分在同一頁面上,在不同的條件下顯示/隱藏。所以我選擇使用View Temple。但nvm,我嘗試了我的假設情況,發現它沒有任何意義。所以我們可以忽略這一點。謝謝 :) – Franva 2014-09-03 01:50:44

相關問題