Me encontré siguiente problema:

usuario visita el sitio, hace clic en «Agregar» y, a continuación, mediante el envío de vuelta al Controlador, el Modelo es recuperar y enviar a la Vista una vez más. Dentro de la vista, puedo verificar si el Modelo no es null
y muestra de datos.

@if (Model != null)
    {
        <div id="appInfo">
            <table>
                <tr>
                    <th>@Html.DisplayNameFor(x => Model.tytul)</th>
                    <th>@Html.DisplayNameFor(x => Model.kategoria.nazwa)</th>
                    <th>@Html.DisplayNameFor(x => Model.liczba_ocen)</th>
                    <th>@Html.DisplayNameFor(x => Model.avg_ocena)</th>
                    <th>@Html.DisplayNameFor(x => Model.typ)</th>
                </tr>
                <tr>
                    <td>@Model.tytul</td>
                    <td>@ViewData["kategoria"]</td>
                    <td>@Model.liczba_ocen</td>
                    <td>@Model.avg_ocena</td>
                    <td>@Model.typ</td>
                </tr>
            </table>
        </div> 
 <div>
                @using (Html.BeginForm("Confirm", "Wydawca", new { app = @Model }))
                {
                    <input type="submit" value="Cofirm it" />
                }
            </div>

Al final el botón «Confirmar» se crea y una vez que haga clic en invocar la confirmación del Método, sino de la aplicación de la variable es siempre null. Si he de poner su valor a nada, pero el Modelo funciona.

    [HttpPost]
    public ActionResult Confirm(aplikacja app)
    {
        ...
    }

Al crear el botón de «Confirmar» el Modelo no es null, he comprobado. Sabes por casualidad lo que está mal?

Html generado

   <form action="/Wydawca/Confirm?app=Adds.Models.aplikacja" method="post">      
   <input type="submit" value="Zatwierdź" />

  • ¿Cuál es el renderizado de html de la etiqueta form? (no estoy seguro de lo que usted espera app = @Model a render)
  • El Html.BeginForm deben envolverse alrededor de todos sus elementos de entrada o no tiene nada que publicar.
  • Ya que usted no la edición de datos, ¿por qué usted necesita para enviar todo el modelo de la espalda (en lugar de la configuración de la ruta parámetro el IDENTIFICADOR único de la modelo)
InformationsquelleAutor Maximus | 2014-10-02

2 Comentarios

  1. 5

    La Html.BeginForm deben envolverse alrededor de todos sus elementos de entrada o no tiene nada que publicar. Cambiar la vista a este:

    @if (Model != null)
    {
        @using (Html.BeginForm("Confirm", "Wydawca", new { app = @Model }))
        {
            <div id="appInfo">
                <table>
                    <tr>
                        <th>@Html.DisplayNameFor(x => Model.tytul)</th>
                        <th>@Html.DisplayNameFor(x => Model.kategoria.nazwa)</th>
                        <th>@Html.DisplayNameFor(x => Model.liczba_ocen)</th>
                        <th>@Html.DisplayNameFor(x => Model.avg_ocena)</th>
                        <th>@Html.DisplayNameFor(x => Model.typ)</th>
                    </tr>
                    <tr>
                        <td> @Model.tytul</td>
                        <td>@ViewData["kategoria"]</td>
                        <td>@Model.liczba_ocen</td>
                        <td>@Model.avg_ocena</td>
                        <td>@Model.typ</td>
                    </tr>
                </table>
            </div> 
            <div>
                @Html.HiddenFor(x => Model.tytul)
                @Html.HiddenFor(x => Model.kategoria.nazwa)
                @Html.HiddenFor(x => Model.liczba_ocen)
                @Html.HiddenFor(x => Model.avg_ocena)
                @Html.HiddenFor(x => Model.typ)
                <input type="submit" value="Cofirm it" />
            </div>
        }
    }
    • Aún no hay elementos nombrados en el formulario.
    • buen lugar!
    • Gracias, finalmente arrancó de trabajo. Cualquier enlace para más explicación?
    • ¿Qué más necesitas saber? Es esencialmente básica de los formularios HTML.
    • Básicamente pensé que si usted envía Modelo que usted puede enviar de vuelta, así que estoy confundido ¿por qué necesitamos que se oculta en todos y cómo se mantiene a la derecha de la información en el método post?
    • Leer el HTML de salida en el que se representa en el navegador, que debería ayudar.
    • Y leer sobre el modelo de enlace!
    • Yo, gracias por su tiempo.

  2. 2

    Usted está tratando de pasar de un objeto (@Model) como un parámetro de ruta (app). Parámetros de la ruta debe contener valores escalares (int, string, etc), no a los objetos. Ver el código HTML generado fuente en el navegador y ver lo que el <form action=""> se establece como. Luego de revisar el concepto de modelo de enlace.

    • He actualizado con el formulario html.
    • El formulario no contiene los elementos nombrados, así que no hay nada para el cuaderno de modelo para intentar enlazar en el aplikacja app parámetro de su método de acción.
    • Lo siento he publicado un código incorrecto. Ahora eche un vistazo.

Dejar respuesta

Please enter your comment!
Please enter your name here