#asp.net-mvc
#asp.net-mvc
Вопрос:
Я использую этот код, но cols=20 продолжает получать HTMLed. Я видел другие решения, но они, похоже, не используют синтаксис типа «new { htmlAttributes = new { etc». Я новичок в MVC, и этот синтаксис был сгенерирован с помощью строительных лесов. У меня нет знаний, чтобы изменить этот синтаксис. Я надеялся просто добавить ‘, cols = «34»‘, как показано ниже.
<div class="form-group">
@Html.LabelFor(model => model.SpendDescription, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextAreaFor(model => model.SpendDescription, new { htmlAttributes = new { @class = "form-control", cols = "34" } })
@Html.ValidationMessageFor(model => model.SpendDescription, "", new { @class = "text-danger" })
</div>
</div>
Сгенерированный HTML-код
<textarea id="SpendDescription" rows="2" name="SpendDescription" htmlattributes="{ class = form-control, cols = 34 }" data-val-maxlength-max="200" data-val-maxlength="Must be less than 200 characters." data-val="true" cols="20"></textarea>
Что, очевидно, неверно, поскольку «htmlattributes etc» стал строкой, «form-control» не стал классом.
ЧЕРТ ВОЗЬМИ! Я только что вспомнил, что я изменил каркасный код EditorFor на TextAreaFor (несколько дней назад), чтобы иметь текстовую область. Так что я уверен, что код, который передает htmlAttributes, неверен.
Ответ №1:
У вас слишком много уровней new {}
🙂
@Html.TextAreaFor(model => model.SpendDescription, new { @class = "form-control", cols = "34" })
должно быть достаточно.
Комментарии:
1. Отлично — спасибо. Быстрый вопрос, если это возможно здесь? Почему перед классом есть символ «@», а перед cols — нет?
2. Потому
class
что это зарезервированное слово в Razor 🙂3. @ThomasAJ Не стесняйтесь принять мой ответ, если это помогло 😉
4. Я бы с удовольствием, но «Для голосования требуется репутация 15». Так что, к сожалению, я человек с сомнительной репутацией. 🙁
5. Теперь у вас должно быть еще 5 🙂