2011-03-03 12 views
8

Hola,¿Establecer propiedad en el objeto modelo?

Estoy construyendo un sitio de ASP.NET MVC y he runned a través de un problema. En mi proyecto me dieron una clase modelview que contiene un par de propiedades, por ejemplo:

public class myModelView 
{ 
    public int MyProperty1(){ get; set;} 
    public int MyProperty2(){ get; set;} 
    public int MyProperty3(){ get; set;} 
} 

Esta clase modelview se une a una vista con tipo donde necesito ser capaz de establecer las propiedades. ¿Cómo hago esto con javascript/jquery? Lo he intentado con Model.MyProperty1 = 1, pero eso no funciona?

BestRegards

+0

¿necesita editar los accesorios con JavaScript en la vista o necesita enviarlos al servidor con JavaScript? –

+0

Necesito establecer la propiedad de ModelView, no desencadenar un envío. – Banshee

Respuesta

22

No puede establecer los valores del lado del servidor con javascript. Puede vincular esos valores a los campos de entrada (cuadros de texto, campos ocultos, áreas de texto, menús desplegables, ...) utilizando ayudantes de HTML y, a continuación, mediante javascript, puede modificar los valores de esos campos de entrada.

Así, por ejemplo, si tiene un campo oculto:

<input type="hidden" name="foo" id="foo" value="bar" /> 

podrá modificar su valor como esto:

$('#foo').val('some new value'); 

Luego, cuando el formulario que contiene se envía al servidor el nuevo valor estar obligado a su modelo de vista.

+0

Tengo un modelo que expone una matriz de 'MyType', que tiene dos propiedades,' Nombre' y 'Valor'. Quiero que el usuario pueda agregar y eliminar filas de pares nombre-valor, al modelo principal, y todo esperará hasta que se envíe y guarde todo el formulario. ¿¿Cómo?? – Shimmy

2

Se están tratando de establecer la propiedad del lado del servidor en el cliente - no va a funcionar. Su modelo de vista solo existe en el servidor cuando se procesa su vista. Una vez que la respuesta se envía al navegador, su clase ya no existe.

Si desea pasar algunos datos del cliente al servidor que tiene que:

  • mandar un formulario, o
  • realiza una llamada AJAX

Tome un vistazo a jQuery ajax método.

ViewModel se usa para pasar datos del controlador a la vista para que la vista pueda representar HTML. Después de que se represente el HTML, ViewModel se descarta. No tiene sentido establecer las propiedades de ViewModel en la vista, ya que nada las usará más adelante.

Creo que proviene del fondo de WebForms (UpdatePanel). El MVC es un concepto/arquitectura totalmente diferente. Funciona de forma diferente que WebForms/UpdatePanel.

+0

Digamos que obtuve la siguiente jerarquía de la clase ModelView MyClass> F> Ordenar, estoy enviando la propiedad F a una vista patial, desde aquí puedo configurar $ ('# F_Order') y devolver este valor al servicio. Necesito hacer lo mismo en el archivo aspx principal y para hacerlo he intentado '#Model_F_Order' sin éxito? Maby, ¿tengo que unir la propiedad a un campo oculto para que esto funcione? – Banshee

+0

¿Qué es un 'servicio' en 'devolver este valor al servicio'? –

+0

Lo sentimos, el ModelView se establecerá en el lado del servicio donde se enviará a la vista.La vista se envía al cliente y cuando el cliente la envía, el enlazador predeterminado intentará enlazar (en este caso) con ModelView. Lo que necesito es establecer la propiedad en este ModelView, pero supongo que todo lo que necesito es realmente un campo oculto vinculado a la propiedad adecuada en la clase ModelView. – Banshee

Cuestiones relacionadas