2009-12-06 26 views
5

Tengo una tabla que enumera los productos y también muestra un cuadro de texto de cantidad y un Html.ActionLink. Cada cuadro de texto de cantidad tiene una identificación única derivada de la identificación del producto. Creo que esto debería ser simple, pero parece que no puedo entender cómo obtener el valor en el cuadro de texto asociado que pasa a mi controlador cuando el usuario hace clic en el enlace. Mi código está debajo y cualquier ayuda es apreciada.Pasar el valor del cuadro de texto usando Html.ActionLink

<% foreach (var item in Model) { %> 

    <tr> 
     <td> 
      <%= Html.Encode(item.Id) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.Description) %> 
     </td> 
     <td> 
      <%= Html.Encode(String.Format("${0:F}", item.Cost)) %> 
     </td> 
     <td> 
      <%= Html.TextBox(String.Format("quantity{0}", item.Id), "0") %> 
     </td> 
     <td> 
      <%= Html.ActionLink("Add", "Add", new { id = item.Id, quantity="I want the quantity here?" })%> 
     </td> 
    </tr> 

Respuesta

2

creo que lo que quiere es la siguiente:

<%= Html.TextBox(String.Format("item[{0}].quantity", item.Id), "0") %> 

Tener un vistazo a la siguiente entrada en el blog de Scott Hanselman para más detalles acerca de esto:

ASP.NET Wire Format for Model Binding to Arrays, Lists, Collections, Dictionaries

Ver también esta publicación de blog de Steve Sanderson. Se le permitirá editar los elementos individuales:

editar una lista de longitud variable de los elementos de ASP.NET MVC
http://blog.codeville.net/2008/12/22/editing-a-variable-length-list-of-items-in-aspnet-mvc/

+0

Lo siento, creo que mi pregunta estaba mal redactada. Quiero que cualquier valor que el usuario ponga en el cuadro de texto pase a mi controlador cuando haga clic en el enlace Agregar. –

+0

Básicamente, su código original sugiere el enlace a una lista, pero su descripción de su requerimiento sugiere el enlace de un solo registro. –

3

No hay manera de hacer esto en HTML, por lo tanto no hay una forma de hacerlo en ASP.NET MVC.

Hay dos posibles soluciones a este que se puede elegir:

  1. uso de JavaScript de forma que cuando el usuario edita el cuadro de texto que cambiar dinámicamente el valor de la etiqueta de anclaje para incluir lo que escriben en. No puede usar enrutamiento ASP.NET para esto porque eso se ejecuta en el servidor y necesita un código del lado del cliente.

  2. Haga un envío de formulario en lugar de un enlace. Esta es la forma recomendada en HTML. Cuando el usuario envía datos, debe estar en un formulario. Envuelva todo en una etiqueta de formulario y coloque el cuadro de texto y un botón allí. Establezca la acción del formulario para que sea la URL en la que desea que se publique.

Cuestiones relacionadas