В моем проекте MVC4 у меня есть модель просмотра категорий с коллекцией моделей вида продукта. Я использую редактор шаблонов, чтобы сделать единую модель представления продукта, и передать коллекцию зрения продукта моделей к нему:Как связать поля с нокаутом в шаблоне редактора в MVC4?
Категория вид модели:
@model CategoryViewModel
@using MVC4PartialViews.Models.ViewModels
<div class="editor-field">
@Html.EditorFor(model => model.CategoryName)
@Html.ValidationMessageFor(model => model.CategoryName)
</div>
@Html.EditorFor(x => x.Products)
Редактор шаблонов, что делает каждый продукт в коллекции:
<div class="editor-field">
@Html.EditorFor(model => model.ProductName)
@Html.ValidationMessageFor(model => model.ProductName)
</div>
// etc.
Это работает очень хорошо, как это автомагически имена и индексы элементов правильно, чтобы все продукты публиковались назад в рамках модели представления родитель Категория - вот что она выводит:
<div class="editor-field">
<input class="text-box single-line" id="Products_0__ProductName" name="Products[0].ProductName" type="text" value="Add 1st product for this Category" />
<span class="field-validation-valid" data-valmsg-for="Products[0].ProductName" data-valmsg-replace="true"></span>
</div>
Как связать поля в шаблоне редактора с нокаутом? Могу ли я каким-либо образом получить доступ или использовать значение индекса, которое использует шаблон редактора для обозначения элементов? Я не могу связать полей никаких проблем в родительском (категория) модели представления, как показано ниже:
<script>
window.defaultCategory = @Html.Raw(Json.Encode(Model));
</script>
@Html.TextBoxFor(
model => model.CategoryName,
new Dictionary<string, object>
{
{"style", "width: 30%;"},
{"placeholder", "Please enter the Category name"},
{ "data-bind", "value: currentCategory.CategoryName" }
})
я должен был бы произвести что-то вроде этого, где [п] значение индекса производится с помощью редактора шаблонов, как это делает каждый продукт в коллекции продуктов:
{ "data-bind", "value: currentCategory.Products[n].ProductName" }
или это будет так:
{ "data-bind", "value: currentCategory.Products()[n].ProductName" }
Все помощь или идеи оценили :)
Отлично! Не знакомы с ViewData.TemplateInfo, необходимо прочитать об этом. –