PartialView не рендеринг - PullRequest
1 голос
/ 24 июня 2009

На мой взгляд, у меня есть:

<% 
   foreach (Personas p in Model.Personas) {
       if (p.DisType == DisType.TextArea) {
 %>

<% Html.RenderPartial("~/Views/Shared/Controls/Custom/xxx/Textbox.ascx", p); %>

<%
       }
   }
 %>

Сначала я не уверен, что имею право <%%>.

Во-вторых, в моем Partial View Textbox.ascx я строго ввел его также в свой класс ViewModel, как и в моем View .. в том же классе ViewModel. Мой класс ViewModel имеет свойство типа Personas. Поэтому я предположил, что, поскольку я передаю ap (типа Personas) в свой RenderPartial в качестве объекта, который должен быть передан ему, до тех пор, пока я строго ввел свой частичный вид и этот объект (который является классом ViewModel) имеет этот тип в этом (персонажи), что я могу просто сделать это сейчас в моем частичном представлении:

<fieldset>
    <div>
        <span>*</span><label><%=Model.Personas.Name %></label>
        <p><%=Model.Personas.Info %></p>
    </div>
    <div>
        <%=Html.TextBox(Model.Personas.Name, "",
                 new { name=Model.Personas.Name, id= Model.Personas.Id,
                       size = Model.Personas.Size1 })%>
    </div>
</fieldset>

Наконец, я попробовал все это. Но ничего не получается. Я не знаю почему. Я не знаю, имеет ли я неправильный синтаксис в моем представлении, или я не получаю правильные данные, которые передаются, или что в моем частичном представлении, если я неправильно подключаю к переданному объекту.

Ответы [ 2 ]

1 голос
/ 24 июня 2009

Представление должно наследоваться от ViewUserControl<Personas>

и в пределах окна модель указывает на действующий экземпляр персонажа

<span>*</span><label><%=Model.Name %></label>
1 голос
/ 24 июня 2009

Ваше предположение неверно. Если вы передаете тип «Personas» вашему частичному представлению в качестве его модели, тогда он должен наследовать System.Web.Mvc.ViewUserControl<Personas>, а не тот же тип, что и родительское представление. Частичное представление не может просто «знать», что ваше родительское представление Тип модели имеет свойство типа Personas, и каким-то образом отобразить объект, который вы передаете ему, этому свойству.

Кроме того, поскольку у вас нет буквального текста, отображаемого между тегами вашего сервера, вы можете сократить свои теги до простого:

<% 
   foreach (Personas p in Model.Personas) {
       if (p.DisType == DisType.TextArea) {

         Html.RenderPartial("~/Views/Shared/Controls/Custom/xxx/Textbox", p); 

       }
   }
 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...