Asp.net

ASP.NET MVC - 使用模型中的布爾值禁用 Html Helper 控制項

  • May 6, 2013

我正在使用 Html 助手將文本框輸出到頁面。我想根據模型中的布爾值是真還是假來動態添加 disabled 屬性。

我的模型有一個返回布爾值的方法:

<% =Model.IsMyTextboxEnabled() %>

我目前呈現如下文本框,但我現在想啟用或禁用它:

<% =Html.TextBox("MyTextbox", Model.MyValuenew { id = "MyTextbox", @class = "MyClass" })%>

如果 Model.IsMyTextboxEnabled() == true的返回值,我希望輸出以下內容:

<input class="MyClass" id="MyTextbox" name="MyTextbox" type="text" value="" />

如果它 == false,我希望它輸出為:

<input class="MyClass" id="MyTextbox" name="MyTextbox" type="text" value="" disabled />

最乾淨的方法是什麼?

這應該可以解決問題:

<%= Html.TextBox("MyTextbox", Model.MyValuenew,           
     (Model.IsMyTextboxEnabled() ? (object) new {id = "MyTextbox", @class = "MyClass"}
                                 : (object) new {id = "MyTextbox", @class = "MyClass", disabled="true" })) %>

在您的助手中,您是否會在生成 html 時檢查程式碼,它只是檢查 bool,然後添加 disabled 屬性或將其排除在外?

這是一個簡單的例子,結構不是很好,但是……

if (disabled)
return string.Format(CultureInfo.InvariantCulture, "<input type=text disabled/>", new object[] { HttpUtility.HtmlAttributeEncode(s), myTextBox });

這是你問的嗎?

編輯:

等等,我現在明白了。我認為您需要創建自己的幫助程序或擴展 MVC 文本框幫助程序,以便您可以做到。

要麼,要麼我認為你可以做類似的事情;

<%= Html.TextBox("mytextbox","", new { disabled="true" } %>

以上內容未經測試,但類似的東西應該​​可以工作。

編輯2:

<% if (condition) {%>
 <%= Html.TextBox("mytextbox", "", new {@readonly="readonly"}) %>
<%} else {%>
 <%= Html.TextBox("mytextbox", "") %>
<%}

引用自:https://stackoverflow.com/questions/1303204