¬ то врем¤ как ¤ занималс¤ этой проблемой и столкнулс¤ с записью —. —андерсона (создател¤ Knockoutjs), где он описал и решил аналогичную проблему. я использовал часть своего кода и пыталс¤ изменить его в соответствии с моими потребност¤ми. я помещаю код ниже в некоторый класс (exapmle: Helpers.cs), добавл¤ем пространство имен в web.config.
@{
var index = Guid.NewGuid();
var prefix = Regex.Match(ViewData.TemplateInfo.HtmlFieldPrefix, @"^(.+)[d+]$").Groups[1].Captures[0].Value;
//TODO add a ton of error checking and pull this out into a reusable class!!!!
ViewData.TemplateInfo.HtmlFieldPrefix = prefix + "[" + index + "]";
}
<input type="hidden" name="@(prefix).Index" value="@index"/>
ѕосле того, как вы можете сделать EditTemplate или частичным, как это
@using TestMVC.Models
@using System.Text.RegularExpressions
@model Phone
<div class="form-horizontal">
<hr />
@{
var index = Guid.NewGuid();
var prefix = Regex.Match(ViewData.TemplateInfo.HtmlFieldPrefix, @"^(.+)[d+]$").Groups[1].Captures[0].Value;
//TODO add a ton of error checking and pull this out into a reusable class!!!!
ViewData.TemplateInfo.HtmlFieldPrefix = prefix + "[" + index + "]";
}
<input type="hidden" name="@(prefix).Index" value="@index"/>
<div class="form-group">
@Html.LabelFor(model => model.Number, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Number, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Number, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.IsEnabled, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model => model.IsEnabled)
@Html.ValidationMessageFor(model => model.IsEnabled, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Details, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextAreaFor(model => model.Details, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Details, "", new { @class = "text-danger" })
</div>
</div>
</div>
» перечислите свой шаблон рендеринга списка (частичный).