2014-09-03 60 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

相关问题