2015-02-27 2 views
3

В дополнение к предлагаемому решению here, которое я пробовал, но не работало - мне хотелось знать, как бритва формирует визуализацию строго типизированного частичного представления? Я сделал то, что было предложено, но кажется, что он не привязан должным образом и чего-то не хватает.MVC Предоставление частичного представления в редакторе для

Моя модель "субсчет":

public class Cohort 
{ 
    public bool ukft { get; set; } 
    public bool ukpt { get; set; } 
    ...etc 
} 

Моя сильно типизированных частичный вид:

@model Models.Cohort 

@Html.RadioButtonFor(model => Model.ukft, true) <span style="margin-right:8px;">Yes</span> 
@Html.RadioButtonFor(model => Model.ukft, false) <span>No</span> <br /> 

Моя главная модель (которая содержит список объектов когорте):

public class OptOut 
{ 
    public int optOutID { get; set; } 
    public bool hasOptedOut { get; set; }   
    public List<Cohort> list { get; set; } 

    public OptOut() 
    { 
     List<Cohort> list = new List<Cohort>(); 
     list.Add(new Cohort()); 
     list.Add(new Cohort()); 
     list.Add(new Cohort()); 
     list.Add(new Cohort()); 
     this.list = list; 
    } 
} 

и затем мой html:

@model Models.OptOut 
@using (Html.BeginForm("OptedOut", "Home")) 
{ 
    //this should supposedly figure out to render a partial view for each element in the list 
    @Html.EditorFor(model => model.list) 

    <div class="form-group" style="margin-top:25px;"> 
     <input id="confirm" type="submit" value="Confirm" class="btn btn-success btn-lg"/> 
    </div> 
} 

ответ

2

Кажется, что вам просто не хватает связи между EditorFor и вашим частичным представлением. В то время как EditorForделает, используйте частичные представления, более подходящим образом, он использует так называемые «шаблоны редактора». Это просто частичные представления, местоположение и имя которых соответствуют определенному соглашению.

А именно, ваш частичный вид должен идти в Views\Shared\EditorTemplates. (Создайте каталог. По умолчанию он не существует.) Затем он должен быть назван в честь того типа, с которым он должен быть использован. Вот, вот Cohort, поэтому окончательный путь и имя должно быть:

Views\Shared\EditorTemplates\Cohort.cshtml 

Затем EditorFor увидите, что у вас есть список Cohort с и использовать шаблон Cohort.cshtml редактор для визуализации каждого элемента в списке.

Смежные вопросы