Вы объявили «список» как «свойство уровня класса», а не «свойство уровня экземпляра». Чтобы иметь свойства, определенные на уровне экземпляра, вам необходимо инициализировать их путем ссылки с параметром «self» в методе __init__
(или в другом месте в зависимости от ситуации).
Вы не строго нужно инициализировать свойства экземпляра в методе __init__
, но это упрощает понимание.
Это потому, что вы используете EditorFor вместо чего-то определенного, например TextBoxFor.
@Html.TextBoxFor(model => model.Name, new { htmlAttributes = new {
@class = "form-control" }, autofocus="autofocus"})
Или вы можете сделать это с помощью jQuery:
<div class="editor-field focus">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
$(function() {
$('.focus :input').focus();
});
Update: Как вы знаете, TextBoxFor
всегда создает текстовое поле с типом ввода, но EditorFor
является немного умный, он отображает разметку на основе типа данных свойства.
Я следил за этой нитью, и я, возможно, наткнулся на ответ на ваш вопрос об автофокусировке на EditorFor - это все Asp.Net 4.5 и MVC 5, но это не важно.
Я добавляю имя скрипта к BundleConfig и отобразить его в представлении.
<div class="col-md-10" someclassname">
type="text" autofocus="autofocus"
в редактор EditorFor @класс. Итак, new{@class="form-control", type="text", autofocus="autofocus"
.someclassname
, получает курсорный фокус ... PS. Фактически, если вы просто выполняете (3), это также работает ... Используя .NET Framework 4.5 и MVC 5, это работает для меня:
@Html.EditorFor(model => model.Description, new {
htmlAttributes = new {
@class = "form-control",
autofocus = true
}
})
Вы помещаете атрибут автофокуса в неправильное место.
@Html.EditorFor(model => model.Description,
new { htmlAttributes = new { @class = "form-control" }, autofocus = "" })
Попробуйте это вместо:
@Html.EditorFor(model => model.Description,
new { htmlAttributes = new { @class = "form-control", autofocus = "" } })