Pregunta

MVC 3 con Pregunta de afeitar sobre opiniones parciales.

Tengo esto :

@model MvcGroupie.Models.Message

@{
    ViewBag.Title = "Details";
}

<h2>Details</h2>

<fieldset>
    <legend>Message</legend>

    <div class="display-label">postCreator</div>
    <div class="display-field">@Model.postCreator</div>

    <div class="display-label">postDate</div>
    <div class="display-field">@String.Format("{0:g}", Model.postDate)</div>

    <div class="display-label">postSubject</div>
    <div class="display-field">@Model.postSubject</div>

    <div class="display-label">postBody</div>
    <div class="display-field">@Model.postBody</div>
</fieldset>

    @Html.Partial("~/Views/Shared/replyPartial.cshtml")
<p>
    @if(Model.postCreator == User.Identity.Name) {@Html.ActionLink("Edit", "Edit", new { id=Model.postID } + " | ")} 
    @Html.ActionLink("Reply", "Reply", new { id=Model.postID }) |                                                                
    @Html.ActionLink("Back to List", "Index")
</p>

Para una publicación muy simple y responda la aplicación MVC con la que estoy jugando para aprender. No puedo obtener un parcial para mostrar para las respuestas:/

Si agrego lo parcial, obtengo 'mvcgroupie.models.message', pero este diccionario requiere un elemento modelo de tipo 'mvcgroupie.models.reply'. Ok, ¿entonces nunca puedes usar modelos DIFF en la misma página? La primera línea comienza con @model mvcgroupie.models.message para que pueda acceder al modelo.postsubject y similares. Pero si quiero agregar las respuestas y tener personas capaces de responder desde la misma página, no lo permite, caerían en @model mvcgroupie.models.Reply ...

Curioso cómo evitar esto ... probé @html.partial ("~/vistas/compartir/responderpartial.cshtml", model.reply) pero no reconoce model.reply ....

Roadmock serio en mi forma de aprender alguna ayuda?

¿Fue útil?

Solución

Cuando realiza la llamada para realizar una vista parcial que requiere un modelo diferente, debe pasar el modelo a esa vista. El comportamiento predeterminado es que la vista parcial usará el mismo modelo que la vista que lo llamó, pero que no funcionará en su caso porque los modelos son diferentes.

Prueba esto:

@Html.RenderPartial("~/Views/Shared/replyPartial.cshtml", Model.Replies)

Supongo que su objeto de mensaje tiene una propiedad de respuestas. No olvide hacer una verificación nula en su vista parcial en caso de que el mensaje no tenga ninguna respuesta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top