2011-03-31 189 views
1

在我的HTML文件中,我有一个必须禁用或启用的文本框,具体取决于我的控制器值。 没有问题,将其设置为禁用模式,但设置它使...MVC:为HTMLAttribute中的文本框设置禁用或不可用

这是我的代码:

<%= Html.TextBoxFor(model => model.test, new Dictionary<string, object> { { "disabled", ViewContext.RouteData.Values["controller"].ToString() == "MyTest" ? "" : "disabled"}} 

我已经看到了关于这个问题的一些想法:here

mvccontrib。 FluentHtml或InputExtensions是单一的解决方案,回答我的问题?

进出口使用“禁用”,但我可以用“只读”属性...此代码的目的不是为了让用户填写文本框...

感谢您的建议上主题。

回答

2

就打破行除了弄成这个样子:

<% 
if (MyConditionIsTrue) 
    Response.Write(Html.TextBoxFor(model => model.test, new { disabled = "true" })); 
else 
    Response.Write(Html.TextBoxFor(model => model.test)); 
%> 
+0

大家好。感谢您的回答。我认为这三种是货物,但Johannes's更容易应用。 – PetersLast 2011-04-01 06:58:26

2

这是一个自定义的HTML帮助一个很好的候选人:

public static class HtmlExtensions 
{ 
    public static MvcHtmlString CustomTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> ex) 
    { 
     var controller = htmlHelper.ViewContext.RouteData.GetRequiredString("controller"); 
     var htmlAttributes = new Dictionary<string, object>(); 
     if (string.Equals(controller, "MyTest", StringComparison.OrdinalIgnoreCase)) 
     { 
      htmlAttributes["disabled"] = "disabled"; 
     } 
     return htmlHelper.TextBoxFor(ex, htmlAttributes); 
    } 
} 

然后:

<%= Html.CustomTextBoxFor(model => model.test) %> 
+1

使用Model的htmlhelper创建的完美示例。 – tugberk 2011-03-31 17:14:13

+0

它似乎是代码interessant的一部分,我不习惯编程。我需要在哪里粘贴这段代码?我的意思是,哪个文件夹? – PetersLast 2011-04-01 07:00:12

0

人们喜欢Html助手,但你不要使用它们。

@if (MyConditionIsTrue) { 
    <input id="test" name="test" value="@Model.test" disabled="disabled" /> 
} 
else { 
    <input id="test" name="test" value="@Model.test" /> 
} 

如果你不得不重复使用这个逻辑多次,一个html助手可能是一个好主意。如果你只做了一次,它可能不会。

+0

我想了解,为什么人们不必使用Html Helpers? – PetersLast 2011-04-01 07:00:41

+0

顺便说一句,“@”不是来自MVC的初始语言,不是? – PetersLast 2011-04-01 07:01:26

+0

or'' – mlienau 2014-10-20 22:36:25

0
disabled 
or 
disabled = disabled 
or 
disabled = true 
or 
disabled = false 
or 
disabled = enable 

以上所有手段都是禁用的。

从元素中删除禁用,以启用该功能。

if(condition) 
    <input .... disabled/> 
else 
    <input ..... />