Учитывая метод контроллера, который возвращает IList<Scope>
Где Scope
содержит набор значений bool
и некоторые дополнительные дочерние объекты.MVC5 каскадирование EditorFor в коллекции
public class Scope
{
public string Name { get; set; }
public bool A { get; set; }
public bool B { get; set; }
public bool C { get; set; }
public Investment Item { get; set; }
}
У меня есть основной вид со следующей разметкой:
@model IList<Scope>
<div>
@Html.EditorForModel("Panel")
</div>
У меня есть мнение, называемое Panel.cshtml
внутри EditorTemplates структурирован следующим образом:
@model IList<Scope>
@for (int i = 0; i < Model.Count; i++)
{
<div class="panel panel-info">
<div class="panel-heading">
<p>@Model[i].Name</p>
</div>
<div class="panel-body">
@Html.EditorFor(_ => _[i])
</div>
</div>
}
EditorFor(_ => _[i])
не делает шаблон стандартного объекта с и для каждого поля по его типу?
Почему EditorFor
не отображает редактор для каждого из свойств, когда он вызывается из другого редактора?
Если я переведу всю разметку с Panel.cshtml
на главный вид, она работает правильно.
Невозможно получить такое же поведение из шаблона редактора?
Просто любопытно, что делает ' @ Html.EditorFor (_ => _ [i]) 'делать? Должен ли я задать это как полный вопрос? –
Его то же, что и HTML.EditorFor (model => model [i]). В функциональном программировании (пролог, f #, Haskell и т. Д.) Символ подчеркивания используется вместо полного имени переменной, когда контекст делает его однозначным. Я использую ту же краткую нотацию в C# lambdas, на мой взгляд, это лучше, чем писать x повсюду. – Jim