Можно использовать HTMLHelper не только для значения атрибута, но вместо этого для имени атрибута?

Я хочу генерировать в зависимости от того, что я передаю конкретный атрибут с его значением. Вот как я хочу использовать помощника:

<sometag @PossibleHelper(parameter)/>

После того, как возможный помощник сделает свое дело, это может быть результатом:

<sometag attributeName="attributeValue"/>

Как я могу выразить это в помощнике?

@helper PossibleHelper(someType){

    if(condition){
      attributeName="attributeValue"      //this is wrong
    }
}

1 ответ

Решение

Когда вы в помощнике, это просто обычный синтаксис бритвы.

@helper PossibleHelper(SomeType something) {
    if (condition) {
        <span attributeName="attributeValue">blah</span>
    }
}

Вы можете установить атрибут, как это.

@helper PossibleHelper(int something) {
    var attrValue = string.Empty;
    if (true) {
        attrValue = "attributeValue";
    }
    @(string.Format("attribute={0}", attrValue))
}

Использование:

<sometag @PossibleHelper(parameter)/>

К вашему сведению, вы также можете сделать метод расширения для HtmlHelper что может быть лучше, если код разделен между представлениями или имеется приличное количество логики.

public static class HtmlHelperExtensions
{
    public static MvcHtmlString SomeExtension(this HtmlHelper htmlHelper)
    {
        // ...
    }
}
Другие вопросы по тегам