2011-03-31 26 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 ..... /> 
相關問題