実際には同じ問題が発生しました。オーバーロードされたパラメータを持つ拡張メソッドを実装しました。このメソッドは、コントロールを無効にするかどうかを示すブール値を取ります。適切なときには「無効」属性を追加し、組み込みのHtmlHelperで重い作業を処理させます。
拡張クラスとメソッド:その後、あなたは自分の新しいクラスを参照し、それはあなたがTextBoxForオーバーロードのいずれかのこれらの拡張機能を定義する必要があるだろうということは注目に値します@Html.TextBoxFor(m => m.SomeValue, new { @class = "someClass" }, <Your bool value>)
を呼び出す必要が
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web.Routing;
public static class OurHtmlHelpers
{
public const string DisabledAttribute = "disabled";
public static MvcHtmlString TextBoxFor<TModel, TProp>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProp>> expression,
object htmlAttributes,
bool canEdit)
{
var htmlAttributeDictionary = SetDisabledAttribute(htmlAttributes, canEdit);
return htmlHelper.TextBoxFor(expression, htmlAttributeDictionary);
}
private static RouteValueDictionary SetDisabledAttribute(object htmlAttributes, bool canEdit)
{
var htmlAttributeDictionary = new RouteValueDictionary(htmlAttributes);
if (!canEdit)
{
htmlAttributeDictionary.Add(DisabledAttribute, DisabledAttribute);
}
return htmlAttributeDictionary;
}
}
あなたは使いたいですが、それは妥当なトレードオフのようです。また、機能を追加する他のHtmlHelpersに同じコードの大部分を利用することもできます。
それは動作します、私はあなたにビールを借りています!ありがとう – Tony
私はそれを待つことになりますxD –
それはかなり乾いています:>しかし、私はそれが好きです。しかし、私は自分の(より壊れやすい)バリアントを追加しています – goofballLogic