유창한 구문을 사용하여 강력한 형식의 HTML 도우미를 만들려고합니다. 나는 온라인에서 예제를 보았지만 그들은 모두 TagBuilder
을 사용하여 html을 구현했다. 대신 나중에 액세스 할 수 있도록 CurrencyTextBox
클래스의 원본 HTML 도우미 개체에 대한 참조를 저장하려고합니다. 많은 유용한 정보가 포함되어 있으며 TextBoxFor
메서드를 사용하여 텍스트 상자를 만들 수도 있습니다.유창한 구문을 사용하여 강력하게 형식화 된 HtmlHelper를 만드는 방법은 무엇입니까?
아래 코드는 작동하지 않습니다.
확장 메서드
public static class CurrencyTextBoxHelper
{
public static CurrencyTextBox<TModel, TValue> CurrencyFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression)
{
return new CurrencyTextBox<TModel, TValue>(helper, expression);
}
}
CurrentTextBox 클래스 내가 오류
심각도 코드 설명 Proj를 얻을
ToString()
방법 안에 그러나 위의 코드에서public class CurrencyTextBox<TModel, TValue>: IHtmlString { private RouteValueDictionary _attr = null; private HtmlHelper<TModel> _helper; private Expression<Func<TModel, TValue>> _expression; public CurrencyTextBox(HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression) { _helper = helper; _expression = expression; _attr = new RouteValueDictionary(); } public CurrencyTextBox<TModel, TValue> AddClass(string class) { _attr.Add("class",class); return this; } public CurrencyTextBox<TModel, TValue> Enabled(bool enabled) { if (!enabled) { _attr.Add("disabled", "disabled"); } return this; } public string ToHtmlString() { return ToString(); } public override string ToString() { // i get error at line below var textBox = _helper.TextBoxFor(_expression, ModelMetadata.FromLambdaExpression(_expression, _helper.ViewData).EditFormatString, _attr); return textBox.Tostring(); } }
, ect 파일 줄 제거 상태 오류 CS1061 'HtmlHelper'에 'TextBoxFor'에 대한 정의가없고 확장 메서드가없는 'TextBoxFor' a 지시문을 사용하지 않거나 'HtmlHelper'형식의 인수 을 수락 할 수 없습니다. 어셈블리 참조?)
또한 htmlhelper와 expression을 costructor에 전달할 수 있습니까? 귀하의 override
ToString()
메도에서 ToHtmlString()
에