none
Recuperar Datos de la Vista con input type "submit" RRS feed

  • Pregunta

  • Envio datos a la vista, mediante el modelo y lo despliega todo bien, pero no puedo recuperar los datos de regreso (httpPost) mediante un <input type="submit" value="Continue...">

    El procedimiento esta dentro de un @Using Html.BeginForm() Donde estará mi error ?

    miércoles, 4 de septiembre de 2013 1:47

Respuestas

  • eduepa No indicas mayor información, depende como lo envíes  y como lo recibas. Podrías enviar parte de tu código para darnos cuenta donde puedes tener el inconveniente?. Recuerda que somos desarrolladores, no adivinos... jeje...
    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:49
    miércoles, 4 de septiembre de 2013 4:26
  • hola

    en el action que captura el post que parametro defines? es alguna clase o simplementevariables

    recuerda que las propiedades de la clase debe coincidir en nombre con las propiedades "name" de los controles para que el binding del modelo de mvc pueda mapear los controles con la clase

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:49
    miércoles, 4 de septiembre de 2013 7:33
  • Lo hice de la siguiente manera:

    @Using Html.BeginForm()

        @<fieldset>

            <table>

                <tr>

                    <th>@Html.DisplayNameFor(Function(model) model.Name)</th>

                    <th>@Html.DisplayNameFor(Function(model) model.Price)</th>

                    <th>@Html.DisplayNameFor(Function(model) model.Libras)</th>

                    <th></th>

                </tr>

            @For Each item In Model

                    Dim currentItem = item

                @<tr>

                    <td>@Html.DisplayFor(Function(modelItem) currentItem.Name)</td>

                    <td>@Html.DisplayFor(Function(modelItem) currentItem.Price)</td>

                    <td>@Html.TextBoxFor(Function(modelItem) currentItem.Libras)</td>

                </tr>

            Next

            </table>

            <p><input type="submit" value="Continue..." /></p>

        </fieldset>

    End Using

    Y en el controlador lo llamo asi:

    <HttpPost()> _

        <AllowAnonymous()> _

        Public Function LisCortes(ByVal model As LisCortesModels) As ActionResult

        End Function

    Lo que neceisot recuperar es lo que el usuario ingresa en:

    <td>@Html.TextBoxFor(Function(modelItem) currentItem.Libras)</td>

    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:49
    miércoles, 4 de septiembre de 2013 19:40
  • Perdón, no es que lo llame asi del Controlador, sino que va a esa Funcion hacienda "click" en el input
    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:50
    miércoles, 4 de septiembre de 2013 19:41
  • hola

    porque usas modelItem en el parametro pero despues defines currentItem

    @Html.TextBoxFor(Function(modelItem) currentItem.Libras)

    no berias ser

    @Html.TextBoxFor(Function(modelItem) modelItem.Libras)

    despues en la clase "LisCortesModels", defines una propiedad publica que lleva el nombre "Libras"

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:50
    jueves, 5 de septiembre de 2013 1:16
  • Si coloco "modelItem.Libras" en lugar de "currentItem.Libras" me dice el siguiente error: "que Libras no es miembro de la coleccion IEnumerable del Modelo"

    Al modelo fue creado asi:

    Public Class LisCortesModels

        Public Property Id As Int32

        Public Property Name As String

        Public Property Price As Decimal

        Public Property Libras As String

    End Class

    Donde cargo de la BD el id, name y price y despliega asi:

    1    Asado      1.25        [string.empty]   

    2    Lomo       2.50        [string.empty]

    3    otro corte 3.25        [string.empty]

    Donde dice [string.empty] es donde el usuario debe completer la cantidad de Libras.

    Al inicio de la vista comienza recibiendo de la siguiente manera:

    @ModelType IEnumerable(Of MvcTheKnife.LisCortesModels)

    Por eso en la vista despliego mediante un for:

    @For Each item In Model

                    Dim currentItem = item

                @<tr>

                    <td>@Html.DisplayFor(Function(modelItem) currentItem.Name)</td>

                    <td>@Html.DisplayFor(Function(modelItem) currentItem.Price)</td>

                    <td>@Html.TextBoxFor(Function(modelItem) currentItem.Libras)</td>

                </tr>

            Next

    Quizas este mal creado el modelo. Si en lugar de como está, estuviera creado como un array de la sigueinte manera:

    Public Class LisCortesModels

        Public Property Id() As Int32

        Public Property Name() As String

        Public Property Price() As Decimal

        Public Property Libras() As String

    End Class

    Pero en realidad no tengo problema en desplegar, sino en leer la cantidad de libras que colocó al usuario en cada tipo de corte

    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:50
    jueves, 5 de septiembre de 2013 11:25
  • hola

    de casualidad ese

    @For Each item In Model

    lo defines dentro de un Html.BeginForm() ? porque si es asi en el action que se invoca podrias evaluar el

    Request.Form para ver como es que se esta enviando las "Libras"

    quizas solo debas definir

    public Sub NombreAction(Libras() As String)

    End Sub

    y con ese array de string alcance para recibir la lista de textbox

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:50
    viernes, 6 de septiembre de 2013 0:45

Todas las respuestas

  • eduepa No indicas mayor información, depende como lo envíes  y como lo recibas. Podrías enviar parte de tu código para darnos cuenta donde puedes tener el inconveniente?. Recuerda que somos desarrolladores, no adivinos... jeje...
    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:49
    miércoles, 4 de septiembre de 2013 4:26
  • hola

    en el action que captura el post que parametro defines? es alguna clase o simplementevariables

    recuerda que las propiedades de la clase debe coincidir en nombre con las propiedades "name" de los controles para que el binding del modelo de mvc pueda mapear los controles con la clase

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:49
    miércoles, 4 de septiembre de 2013 7:33
  • Lo hice de la siguiente manera:

    @Using Html.BeginForm()

        @<fieldset>

            <table>

                <tr>

                    <th>@Html.DisplayNameFor(Function(model) model.Name)</th>

                    <th>@Html.DisplayNameFor(Function(model) model.Price)</th>

                    <th>@Html.DisplayNameFor(Function(model) model.Libras)</th>

                    <th></th>

                </tr>

            @For Each item In Model

                    Dim currentItem = item

                @<tr>

                    <td>@Html.DisplayFor(Function(modelItem) currentItem.Name)</td>

                    <td>@Html.DisplayFor(Function(modelItem) currentItem.Price)</td>

                    <td>@Html.TextBoxFor(Function(modelItem) currentItem.Libras)</td>

                </tr>

            Next

            </table>

            <p><input type="submit" value="Continue..." /></p>

        </fieldset>

    End Using

    Y en el controlador lo llamo asi:

    <HttpPost()> _

        <AllowAnonymous()> _

        Public Function LisCortes(ByVal model As LisCortesModels) As ActionResult

        End Function

    Lo que neceisot recuperar es lo que el usuario ingresa en:

    <td>@Html.TextBoxFor(Function(modelItem) currentItem.Libras)</td>

    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:49
    miércoles, 4 de septiembre de 2013 19:40
  • Perdón, no es que lo llame asi del Controlador, sino que va a esa Funcion hacienda "click" en el input
    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:50
    miércoles, 4 de septiembre de 2013 19:41
  • hola

    porque usas modelItem en el parametro pero despues defines currentItem

    @Html.TextBoxFor(Function(modelItem) currentItem.Libras)

    no berias ser

    @Html.TextBoxFor(Function(modelItem) modelItem.Libras)

    despues en la clase "LisCortesModels", defines una propiedad publica que lleva el nombre "Libras"

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:50
    jueves, 5 de septiembre de 2013 1:16
  • Si coloco "modelItem.Libras" en lugar de "currentItem.Libras" me dice el siguiente error: "que Libras no es miembro de la coleccion IEnumerable del Modelo"

    Al modelo fue creado asi:

    Public Class LisCortesModels

        Public Property Id As Int32

        Public Property Name As String

        Public Property Price As Decimal

        Public Property Libras As String

    End Class

    Donde cargo de la BD el id, name y price y despliega asi:

    1    Asado      1.25        [string.empty]   

    2    Lomo       2.50        [string.empty]

    3    otro corte 3.25        [string.empty]

    Donde dice [string.empty] es donde el usuario debe completer la cantidad de Libras.

    Al inicio de la vista comienza recibiendo de la siguiente manera:

    @ModelType IEnumerable(Of MvcTheKnife.LisCortesModels)

    Por eso en la vista despliego mediante un for:

    @For Each item In Model

                    Dim currentItem = item

                @<tr>

                    <td>@Html.DisplayFor(Function(modelItem) currentItem.Name)</td>

                    <td>@Html.DisplayFor(Function(modelItem) currentItem.Price)</td>

                    <td>@Html.TextBoxFor(Function(modelItem) currentItem.Libras)</td>

                </tr>

            Next

    Quizas este mal creado el modelo. Si en lugar de como está, estuviera creado como un array de la sigueinte manera:

    Public Class LisCortesModels

        Public Property Id() As Int32

        Public Property Name() As String

        Public Property Price() As Decimal

        Public Property Libras() As String

    End Class

    Pero en realidad no tengo problema en desplegar, sino en leer la cantidad de libras que colocó al usuario en cada tipo de corte

    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:50
    jueves, 5 de septiembre de 2013 11:25
  • hola

    de casualidad ese

    @For Each item In Model

    lo defines dentro de un Html.BeginForm() ? porque si es asi en el action que se invoca podrias evaluar el

    Request.Form para ver como es que se esta enviando las "Libras"

    quizas solo debas definir

    public Sub NombreAction(Libras() As String)

    End Sub

    y con ese array de string alcance para recibir la lista de textbox

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta eduepa jueves, 12 de septiembre de 2013 12:50
    viernes, 6 de septiembre de 2013 0:45
  • Lo estoy resolviendo de otra manera. A la BD agregue a esa table un campo Libras y a cada item, le agregue la posibilidad de Edit y con ello modifico el precio y/o las Libras.
    jueves, 12 de septiembre de 2013 12:49