net mvc item dropdownlist change asp asp.net .net drop-down-menu

asp.net - mvc - dropdownlist set selected value c#



SelectedValue vs SelectedItem.Value of DropDownList (5)

Estoy trabajando en un proyecto antiguo escrito y luego parcheado por varias personas a lo largo de los años. En algunos lugares, han utilizado la propiedad SelectedValue y otros lugares en los que han utilizado SelectedItem.Value.

Pregunta: ¿ SelectedValue es solo un azúcar sintáctico para SelectedItem.Value o SelectedValue funciona de manera diferente bajo el capó? ¿Cuál se comporta mejor?

Editar: SelectedItem.Text fue reemplazado por SelectedItem.Value


Ambos son diferentes. SelectedValue propiedad SelectedValue le proporciona el valor real del elemento en la selección, mientras que SelectedItem.Text le proporciona el texto de la pantalla. Por ejemplo: tu menú desplegable puede tener un estilo como

<asp:ListItem Text="German" Value="de"></asp:ListItem>

Entonces, en este caso SelectedValue sería de y SelectedItem.Text daría ''German''

EDITAR:

En ese caso, ambos son los mismos ... Causa SelectedValue le dará el valor almacenado para el elemento seleccionado actual en su menú desplegable y SelectedItem.Value será el valor del elemento seleccionado actualmente.

Entonces ambos le darían el mismo resultado.


En la lista droupdown, hay dos elementos agregar propiedad.

1) Texto 2) valor

Si quieres obtener una propiedad de texto, entonces usa selecteditem.text

y Si desea seleccionar una propiedad de valor, utilice la propiedad de valor seleccionado

En su caso, considero que tanto el valor como la propiedad del texto son los mismos, así que no importa si usa selectedvalue o selecteditem.text

Si ambos son diferentes, entonces nos dan resultados diferentes


Tenga cuidado al utilizar SelectedItem.Text ... Si no hay ningún elemento seleccionado, entonces SelectedItem será nulo y SelectedItem.Text generará una excepción de valor nulo.

.NET debería haber proporcionado una propiedad SelectedText como la propiedad SelectedValue que devuelve String.Empty cuando no hay ningún elemento seleccionado.


Una distinción importante entre los dos (que es visible en el código Reflejado) es que SelectedValue devolverá una cadena vacía si no se selecciona nada, mientras que SelectedItem.Value lanzará una excepción NullReference.


SelectedValue devuelve el mismo valor que SelectedItem.Value .

SelectedItem.Value y SelectedItem.Text pueden tener valores diferentes y el rendimiento no es un factor aquí, solo importa el significado de estas propiedades.

<asp:DropDownList runat="server" ID="ddlUserTypes"> <asp:ListItem Text="Admins" Value="1" Selected="true" /> <asp:ListItem Text="Users" Value="2"/> </asp:DropDownList>

Aquí, ddlUserTypes.SelectedItem.Value == ddlUserTypes.SelectedValue y ambos devolverían el valor "1".

ddlUserTypes.SelectedItem.Text devolverá "Admins", que es diferente de ddlUserTypes.SelectedValue

editar

debajo del capó, SelectedValue se parece a esto

public virtual string SelectedValue { get { int selectedIndex = this.SelectedIndex; if (selectedIndex >= 0) { return this.Items[selectedIndex].Value; } return string.Empty; } }

y SelectedItem se ve así:

public virtual ListItem SelectedItem { get { int selectedIndex = this.SelectedIndex; if (selectedIndex >= 0) { return this.Items[selectedIndex]; } return null; } }

Una diferencia importante entre estas dos propiedades es que SelectedValue tiene un setter , ya que SelectedItem no lo hace. El captador de SelectedValue es más rápido cuando se escribe código, y el problema del rendimiento de ejecución no tiene un motivo real para ser discutido. También una gran ventaja de SelectedValue es cuando se utilizan expresiones vinculantes.

editar escenario de enlace de datos (no puede usar SelectedItem.Value)

<asp:Repeater runat="server"> <ItemTemplate> <asp:DropDownList ID="ddlCategories" runat="server" SelectedValue=''<%# Eval("CategoryId")''> </asp:DropDownList> </ItemTemplate> </asp:Repeater>