2010-05-16 7 views
17

que tienen una vista parcial que tiene algo como esto¿Cómo cambiar el valor de identificación cuando se usa Html.DropDownListFor helper en asp.net mvc 2.0?

Ahora se puede crear un nuevo producto y editar un producto existente. Tanto la edición como la creación usan la misma forma. La creación está en la página principal al cargar. Editar aparece en un cuadro de diálogo de modelo de interfaz de usuario jQuery y representa una nueva vista parcial.

Por lo que respecta a la página, tengo 2 cuadros desplegables con el mismo "id", que es malo, ya que deben ser únicos. Entonces, ¿cómo cambio la identificación? Entonces, cuando la edición se carga, ¿podría tener una identificación de "editSelectedProductName"?

he tratado de hacer esto en el modelo de vista

public string SelectedProductName{ get; set; } 

ViewModelConstructor() 
{ 
    SelectedProductName = "EditSelectedProductName"; 
} 

pero parece que no les importa y sigue usando "SelectedProductName" como el nombre del producto

+0

Mi show del blog tutorial de cómo hacer esto http://blogs.msdn.com/b/rickandy/archive/2012/01/09/cascasding-dropdownlist -in-asp-net-mvc.aspx y http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with -aspnet-mvc – RickAndMSFT

Respuesta

34

no puedo encontrar la documentación en el momento , pero hay una sobrecarga de DropDownListFor que aceptará una colección mecanografiado a objetos de atributos (htmlAttributes es el nombre del parámetro.)

se verá algo como esto:

Html.DropDownListFor(model=>model.SomeProperty, new {@id="UniqueID1234"}); 

Puede usar Intellisense para encontrar la sobrecarga que incluye HtmlAttributes.

+0

Sé que tiene la propiedad htmlAttributes pero en su ejemplo la ha codificado. No puedo codificarlo porque estoy usando la misma vista parcial para ambos casos. La única forma en que puedo ver es que tengo que hacer una propiedad especial en el modelo de datos de vista solo para mantener el id. Esperaba que no tuviera que hacer eso. – chobo2

+0

Otro punto para mencionar es que el atributo "nombre" de esa lista seguirá siendo "SelectedProductName" incluso si intentas anularlo @name = "NotIdName", que es un poco asqueroso, pero no creo que deba afectar las cosas (al menos espero que no). – chobo2

+0

Dave, no puedo anular el atributo de nombre, ¿conoces alguna manera? –

1

Puede utilizar un jQuery codificado:

$('select#[id of your select box]').attr('id', '[id that you want]'); 
Cuestiones relacionadas