Pregunta

Estoy aprendiendo MVC mediante la liberación v2 con v4 Marco de la entidad. Digamos que tengo 3 objetos del juego, Puntos y jugadores. Se relacionan de la siguiente manera: Juego tiene puntos y los puntos puede tener un jugador asociado con ellos (1 juego de muchos puntos y un objeto Point puede tener un jugador).

Estoy tratando de utilizar la función de EditTemplates en MVC2 para hacer mis puntos de vista. En mi opinión juego Editar Quiero tener la información básica de objetos del juego editable, y también los puntos de objetos relacionados. Actualmente estoy utilizando “<%= Html.EditorForModel() %>” (que parece bastante lento) para representar la vista de edición y luego tengo un juego específico y Punto EditTemplates.

Los datos se representa correctamente y se puede editar tanto para el juego y punto de información. Cuando voy a realizar la actualización y enviar el formulario de recibo el objeto “juego” en mi actualización ActionResult. Las propiedades básicas se rellenan para el objeto del juego pero propiedades profundas tales como puntos no son; aparecen como nulo. Si miro a las variables Request.Form en depuración puedo ver los Puntos campos se pasan al servidor pero no colocarse de nuevo en el objeto del juego.

En mi EditTemplate Juego Estoy utilizando el siguiente para hacer que los objetos Puntos:

<%= Html.EditorFor(c => c.Points) %>

Mis puntos EditTemplate se ve así:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Domain.Model.Entities.Point>" %>

<%= Html.EditorFor(c => c.PntId)%>
<tr><td><%= Html.DisplayFor(c => c.User.Username)%></td><td><%= Html.EditorFor(c => c.UserPnt)%></td></tr>

Mi HTML que se representa tiene el siguiente aspecto:

<input id="Points_Points_0__PntId" name="Points.Points[0].PntId" type="hidden" value="226" />
<tr><td>Jay</td><td><input class="text-box single-line" id="Points_Points_0__UserPnts" name="Points.Points[0].UserPnts" type="text" value="20" /></td></tr>

<input id="Points_Points_1__PntId" name="Points.Points[1].PntId" type="hidden" value="227" />
<tr><td>Joe</td><td><input class="text-box single-line" id="Points_Points_1__UserPnts" name="Points.Points[1].UserPnts" type="text" value="20" /></td></tr>

¿Cómo puedo hacer obtener las propiedades de profundidad para enviar de vuelta en el objeto del juego que es aceptada por el controlador de actualización ActionResult para que pueda actualizar al mismo tiempo?

ACTUALIZACIÓN: Esto sin duda parece ser un problema con la forma en que el EditTemplate está prestando la colección Puntos. Si agrego manualmente el siguiente a la vista que aparece correctamente en el objeto del juego:

<input class="text-box single-line" id="Game_Points_0__UserPnts" name="Game.Points[0].UserPnts" type="text" value="20" />
        <input class="text-box single-line" id="Game_Points_1__UserPnts" name="Game.Points[1].UserPnts" type="text" value="20" />

¿Alguna idea de por qué esto está rindiendo como "Points.Points [index] en lugar de Game.Points [Índice] He intentado jugar con los parámetros de la EditFor:?

<%= Html.EditorFor(c => c.Points,null,"Game.Points") %>

pero entonces las entradas rinden como Game.Points.Game.Points [índice]

¿Fue útil?

Solución

Esto es al parecer un error de los primeros lanzamientos de MVC. De acuerdo con el comentario que he recibido de Microsoft en el foro MVC se ve que se fije en la versión RTM.

He volver a utilizar el bucle for para generar el código HTML en la media hora.

Aquí está la respuesta MVC foro de referencia: http://forums.asp.net/t/1515461.aspx

Otros consejos

Game.Points

Han de ser nombrado [0] .PntId o se pueden añadir puntos como argumento para su acción y combinarlos en acción. Especcially si usted les está persistiendo en el PP, que gona tiene que adjuntarlos.

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