net llenar item dropdownlist drop down asp agregar c# .net asp.net-mvc selectlist

llenar - items add dropdownlist c#



Establecer el valor seleccionado en SelectList después de la creación de instancias (10)

¿Te refieres al lado del cliente, en el navegador?

var select = document.getElementById(''mySelect''); select.options[newIndex].selected = true;

¿Tengo razón al pensar que no hay forma de establecer el valor seleccionado en la Lista de selección de la clase C # después de que se haya creado? ¿No es eso un poco tonto?


La propiedad "SelectedValue" es de solo lectura. Configurarlo en el constructor es la única forma.

Tor, SelectList es una construcción ASP.NET MVC utilizada para crear una lista desplegable. Hacerlo a tu manera también debería funcionar, pero SelectList debería hacerlo por ti (y no en JS) si se hace correctamente.


Creo que puedes hacer esto en el controlador. Si va a presentar una lista desplegable con el nombre / ID StateCode, puede establecer el estado seleccionado utilizando este código después de que se haya creado la lista de selección:

ViewData ["StateCode"] = "VT";

Parece que el asistente HTML de la lista desplegable busca un elemento ViewData con el mismo nombre que la lista desplegable que se está creando.

No creo que me guste usar esta técnica, pero parece que funciona.

Estoy de acuerdo en que la clase SelectList es un poco débil en este momento. Me gustaría poder crear una lista de selección y luego seleccionar un valor más adelante por valor o texto.


El objeto SelectList es de solo lectura después de haber sido creado. si quieres seleccionar algo, es mejor que lo hagas así:

<%= Html.DropDownList("clientId", ViewData["clients"] as List<SelectListItem>,)%>

Y en el código detrás:

ViewData["clientId"] = "ASD"; //This should be the value of item you want to select ViewData["clients"] = clientItemList; //List<SelectListItem>


Podría hacerlo bastante fácil con jQuery;

$(function() { $("#myselectlist option[@value=''ItemToSelectValue''].attr(''selected'', ''true''); });


Necesitaba un menú desplegable en una cuadrícula editable con los valores desplegables preseleccionados. Afaik, el controlador proporciona la información de la lista de selección a la vista, por lo que se crea antes de que la vista la consuma. Una vez que la vista consume SelectList, se la entrego a un helper personalizado que usa el asistente DropDownList estándar. Entonces, una solución bastante ligera imo. Supongo que encaja en el espíritu ASP.Net MVC en el momento de la escritura; cuando no es feliz, hazlo tu mismo ...

public static string DropDownListEx(this HtmlHelper helper, string name, SelectList selectList, object selectedValue) { return helper.DropDownList(name, new SelectList(selectList.Items, selectList.DataValueField, selectList.DataTextField, selectedValue)); }


Debido a que este es un resultado tan alto en Google, estoy proporcionando lo que he encontrado para trabajar aquí (a pesar de la edad):

Si está utilizando una vista fuertemente tipada (es decir, el modelo tiene un tipo asignado), el valor seleccionado para el constructor de la lista de selección se sobrescribe con el valor del objeto utilizado para el modelo de la página.

Esto funciona bien en una página de edición, pero no para Crear cuando desea preseleccionar un valor específico, por lo que una solución alternativa es simplemente asignar el valor correcto en un objeto construido predeterminado que pasa a la vista como el Modelo. p.ej

var model = new SubjectViewModel() { Subject = new Subject(), Types = data.SubjectTypes.ToList() } model.Subject.SubjectType = model.Types.FirstOrDefault(t => t.Id == typeId); ViewData.Model = model; return View();

entonces el código en mi Create View que se ve así:

Html.DropDownListFor(model => model.Subject.SubjectTypeId, new SelectList(model.Types, "Id", "Name"))

devuelve la Lista desplegable con el valor que asigné como SelectedValue en la lista.


Sé que es una vieja pregunta, pero podría ayudar a alguien por ahí. Hice lo que parece ser muy parecido a lo que hizo Erik. Acabo de crear una nueva lista selecta de mi actual ...

SelectList myList = GetMySelectList(); SelectListItem selected = myList.FirstOrDefault(x => x.Text.ToUpper().Contains("UNITED STATES")); if (selected != null) { myList = new SelectList(myList, "value", "text", selected.Value); }


Estoy de acuerdo con @awrigley y otros en que es mejor cargar el valor seleccionado usando el constructor de lista de selección en el caso habitual cuando tienes una lista desplegable. Sin embargo, a veces, uno necesita establecer el valor seleccionado en la vista, como cuando tiene una página con n desplegables idénticos. Dado que no es práctico crear tales colecciones en el controlador y puede que ni siquiera sepa con anticipación cuántas listas desplegables necesita, un mejor enfoque es crear una instancia en el modelo de vista como una plantilla sin un conjunto de valores seleccionados y luego crear dinámicamente el resto dinámicamente en la vista.

Me encuentro con esto a menudo al iterar a través de una lista de elementos secundarios en las vistas de edición cuando los niños necesitan menús desplegables. En tales casos, puede hacerlo así con una línea de código:

@Html.DropDownListFor(x => myViewModelFieldName, new SelectList(Model.MyRawSelectListFromMyViewModel.Select(x=> new {x.Value, x.Text}), "Value", "Text", TheValueYouWantToSelect))


Creo que estás luchando contra el marco. Los datos que entran en sus puntos de vista deben crearse en el Último posible minuto (LPM).

Pensando de esta manera, una lista de SelectList es un tipo para alimentar al ayudante de HTML DropDownList . NO es un lugar para almacenar datos mientras usted decide cómo procesarlo.

Una mejor solución sería recuperar sus datos en una List<T> y luego inicializar la SelectList cuando lo necesite. Un beneficio inmediato de esta práctica es que le permite reutilizar su List<T> para más de una DropDownList , como por ejemplo:

Country of birth Country of residence

Estas SelectLists utilizan la lista de Países de tipo List<Country> .

Puede usar su List<T> en el ''último minuto'' como en este ejemplo:

public class TaxCheatsFormViewModel { private List<Country> countries { get; set; } public TaxCheat Cheat { get; private set; } public SelectList CountryOfBirth { get; private set; } public SelectList CountryOfResidence { get; private set; } public SelectList CountryOfDomicile { get; private set; } public TaxCheatsFormViewModel(TaxCheat baddie) { TaxCheat = baddie; countries = TaxCheatRepository.GetList<Country>(); CountryOfBirth = new SelectList(countries, baddie.COB); CountryOfResidence = new SelectList(countries, baddie.COR); CountryOfDomicile = new SelectList(countries, baddie.COD); } }

El punto es que debes mantener tus datos en una List<T> hasta que realmente necesites hacerlo; el último minuto posible (LPM).