Не удается установить cols в Asp.net MVC5 в текстовом поле для

#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 🙂