Библиотека помощников MVC для элементов управления HTML - PullRequest
2 голосов
/ 07 августа 2011

Это, вероятно, глупый вопрос, но я не могу найти то, что ищу.

Существуют ли какие-либо вспомогательные библиотеки MVC, специально для элементов управления типа формы.

Например,Я хочу получить HTML-код для метки, например:

<label class="form-label-left required" for="message">Message: <span>*</span></label>

К сожалению, встроенный помощник не позволяет вам что-либо указывать на метке.(насколько я знаю)

Другие примеры могут указывать типы ввода:

<input type="email" name="EmailAddress" />

И другие типы, такие как 'tel', 'range', 'number'и т. д. из HTML5.

Так есть ли библиотеки, которые дают вам больше контроля над такими вещами, или лучше просто написать своих собственных помощников?

Обновление:

Я нашел это в своем RSS-канале The Morning Brew.

http://www.codeproject.com/KB/webforms/Html5MVCWebControls.aspx

Библиотека для элементов управления HTML5.По-прежнему кажется, что для MVC не хватает настраиваемых библиотек или библиотек HTML5.

1 Ответ

0 голосов
/ 07 августа 2011

Вы можете просмотреть исходный код ASP.NET MVC и найти пользовательских помощников. Вот пример метки с обязательным индикатором.

public MvcHtmlString CustomLabelFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
    var metadata = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
    string htmlFieldName = ExpressionHelper.GetExpressionText(expression);

    string resolvedLabelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
    if (String.IsNullOrEmpty(resolvedLabelText))
    {
        return MvcHtmlString.Empty;
    }

    if (metadata.IsRequired)
    {
        var spanTag = new TagBuilder("span");
        spanTag.AddCssClass("required-star");
        spanTag.InnerHtml = "*";

        resolvedLabelText = string.Concat(resolvedLabelText, spanTag.ToString(TagRenderMode.Normal));
    }

    var tag = new TagBuilder("label");
    tag.Attributes.Add("for", TagBuilder.CreateSanitizedId(helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));
    tag.InnerHtml = resolvedLabelText;
    tag.AddCssClass("text_label");

    return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...