Изменить HTML-макет, созданный EditorForModel, не имея 2 представления
Я отрисовываю свою ViewModel с
Create.cshtml:
@using (Html.BeginForm("Create","TestTemplate")) {
@Html.EditorForModel()
}
Мне не нравится выходной контент, потому что все div один под другим. Что если я хочу горизонтальную компоновку, в которой один элемент плавает слева от другого элемента?
Как я могу изменить такие изменения макета с помощью помощника EditorForModel(), если в моем представлении Create.cshtml нет HTML?
ОБНОВИТЬ:
Почему я должен создать ДВА представления. В одном из них, который я вызываю @Html.EditorForModel(), в другом окне EditorTemplate, я делаю все, что можно сделать в первом представлении через EditorFor( x => x....)??? Это кажется странным для меня.
2 ответа
Вы хотите создать EditorTemplate. В основном создайте новую папку с именем EditorTemplates
в ~/Views/Shared
а затем создайте новый вид в этой папке с именем вашей модели, например Template.cshtml
или что угодно.
Когда вы звоните @Html.EditorForModel()
он будет использовать этот вид в качестве шаблона.
Вопрос довольно старый, но, на мой взгляд, есть еще один подход, который стоит упомянуть. Хотя MVC не MVVM, постарайтесь немного больше подумать об этом. Поскольку сгенерированный HTML является не чем иным, как содержимым страницы, он будет использоваться как модель представления в браузере. HTML не является форматированием вашей страницы. Попробуйте изменить макет вашей страницы с помощью CSS, который будет использоваться для визуализации представления в браузере.
Просто используйте CSS-селекторы, подобные приведенным ниже, чтобы изменить макет вашей формы, элементы ввода или просто определенный элемент ввода:
form { your CSS here }
form input { your CSS here }
form input[name="NameOfInput"] { your CSS here }
В наши дни возможности CSS практически неограниченны: пусть ваши элементы текут влево, вправо или чередуются и т. Д.;-) Вам также не нужно создавать два представления.