none
select con parametros de una lista viewbag

    Pregunta

  • estoy intentando convertir esto que funciona:

    <form class="col s12"> <div class="row"> <label>Frutas</label> <select class="browser-default" > <option value="">Select Fruit</option> <option value="1">Mango</option> <option value="2">Orange</option> <option value="3">Apple</option> </select> </div> </form>

      <script>
                $(document).ready(function () {
                    $('select').material_select();
                });
            </script>

    en lo mismo pero en vez de  las variables escritas como en el codigo value 1 mango.....

    pasar una variable viewbag donde ya se encuentran todos los valores.

    ahora mismo estou usando esto,

     <div Class="dropdown-content">
                            @Html.DropDownList("APP_Tipo", New SelectList(ViewBag.Tipo, "ATA_IdTipoApp", "ATA_Descripcion", "ATA_Descripcion"), "Seleccione Tipo")
                            @Html.ValidationMessageFor(Function(model) model.APP_Tipo)
                        </div>
    pero quiero transformarlo en lo anterior

    miércoles, 4 de julio de 2018 12:50

Todas las respuestas

  • No entiendo bien su consulta.  @Html.DropDownList() de hecho se transforma en un SELECT.  ¿Qué parte de la transformación que actualmente está recibiendo no le satisface?  ¿Qué le falta o qué le sobra?

    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    miércoles, 4 de julio de 2018 18:51
  • Voy a utilizar materialize y no puedo usar @Html.DropDownList, tengo q transformarlo en el codigo q pongo mas arriva, con option value.
    miércoles, 4 de julio de 2018 21:31
  • @Html.DropDownList genera código HTML que se ve muy parecido a lo que usted necesita.  Nunca me he topado con un add-in de JavaScript que tenga problemas con el HTML generado por este y otros métodos similares.

    Si usted genera el <select> con @Html.DropDownList, ¿ve algo que no concuerda con el uso de materialize?


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    miércoles, 4 de julio de 2018 22:13
  • que codigo html genera @Html.DropDownList?

    el problema es que quiero un

    select class="browser-default" 

    no de valores introducidos a piñon si no que los recupere de una lista y no se como hacerlo

    jueves, 5 de julio de 2018 7:41
  • Ok, creo que usted no sabe muy bien cómo es que trabaja MVC, las vistas y Razor.  Por eso se le complica.

    Una vista genera código HTML.  Todo lo que se pone en el archivo de vista se traduce a HTML.  Todo.  El cliente (explorador web) no recibe "@Html.DropDownList" en ninguna parte.  Recibe el resultado de esa función:  <select>...</select>.  En otras palabras, utilizar @Html.DropDownList es equivalente a escribir el <select> a mano.  Al final en el explorador web usted tendrá un elemento <select> sobre el cual puede actuar un plug-in de JavaScript como el que desea utilizar (materialize, según entiendo).

    Entonces haga lo siguiente:

    1. Compile el proyecto usando @Html.DropDownList o similar.  Sin materialize, no importa.
    2. Corra el proyecto.
    3. Navegue hacia la vista.  Espere a que la vista cargue.
    4. Utilice las funciones del explorador para ver el código fuente de la página web.  Normalmente es la tecla F12, o clic derecho sobre el elemento y selecciona "Inspeccionar" o similar, etc.  Puede variar entre exploradores web.

    Anote el HTML correspondiente a lo que en la vista es @Html.DropDownList, que en el explorador web será un elemento <select>.  Muestre esa porción aquí y díganos qué parte de la fracción de HTML es de alguna manera incorrecta para sus propósitos (usar materialize).


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 5 de julio de 2018 10:23
  • creo que no nos estamos enterando, eso que me dices ya se como se hace pero no se como hacer esto

    <select name="APP_Tipo" class="valid" id="APP_Tipo" data-val-number="The field Tipo must be a number." data-val="true"><option value="">Seleccione Tipo</option>
    <option value="3">Access</option>
    <option value="5">SilverLight</option>
    <option selected="selected" value="0">Web</option>
    <option value="6">Web MVC</option>
    <option value="4">WebService</option>
    <option value="2">WinForms</option>
    <option value="1">WPF</option>
    </select>

    estos valores

    <option value="3">Access</option>
    <option value="5">SilverLight</option>
    <option selected="selected" value="0">Web</option>
    <option value="6">Web MVC</option>
    <option value="4">WebService</option>
    <option value="2">WinForms</option>
    <option value="1">WPF</option>

    estan capturados de la version de la aplicacion que los muestra de esta manera

     @Html.DropDownList("APP_NivelSeguridad", New SelectList(ViewBag.NivelSeg, "ANS_IdNivelSeg", "ANS_Descripcion", "ANS_Descripcion"), "Seleccione Nivel")

    los tendria que pasar con la variable  viewbag.tipo

    tengo un javascrip que ejecuta esto:

     <script>
                $(document).ready(function () {
                    $('select')...incompleto;
                });
        </script>
    como hacer un select con javascript que me de opcion y valor



    jueves, 5 de julio de 2018 10:45
  • Pues definitivamente usted no me comprende, y ya se me están agotando las formas de explicarle.

    Trataré una última vez.  Sin explicaciones de mi parte y sin preguntas o discusiones de parte suya, ¿está bien?.  Nada más instrucciones.  Si desea mi ayuda, por favor siga las instrucciones al pie de la letra.

    1. Compile el proyecto usando @Html.DropDownList o similar.  Sin materialize, no importa.
    2. Corra el proyecto.
    3. Navegue hacia la vista.  Espere a que la vista cargue.
    4. Utilice las funciones del explorador para ver el código fuente de la página web.  Normalmente es la tecla F12, o clic derecho sobre el elemento y selecciona "Inspeccionar" o similar, etc.  Puede variar entre exploradores web.
    5. Copie y pegue el fragmento HTML que corresponde al elemento <select> que se generó.

    Nada más.  Hagamos esto para poder avanzar.

    Ah ok, releí su respuesta y según entiendo el HTML que muestra es el SELECT resultante.  Genial.

    Si comparo ese SELECT con el SELECT original de su pregunta, solamente veo que falta la clase "browser-default".  ¿Es esto lo único que le hace falta para completar el uso de materialize?


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT


    • Editado webJose jueves, 5 de julio de 2018 10:57
    jueves, 5 de julio de 2018 10:52
  • te estoy copiando el codigo como de digiste

    <select name="APP_Tipo" class="valid" id="APP_Tipo" data-val-number="The field Tipo must be a number." data-val="true"><option value="">Seleccione Tipo</option>
    <option value="3">Access</option>
    <option value="5">SilverLight</option>
    <option selected="selected" value="0">Web</option>
    <option value="6">Web MVC</option>
    <option value="4">WebService</option>
    <option value="2">WinForms</option>
    <option value="1">WPF</option>
    </select>

    pero eso no es correcto no me sirve, esos valores de opcion cambiaran si añado uno a mi base de datos, eso tiene que ser obtenido de un metodo de consulta

    <option value="3">Access</option>
    <option value="5">SilverLight</option>
    <option selected="selected" value="0">Web</option>
    <option value="6">Web MVC</option>
    <option value="4">WebService</option>
    <option value="2">WinForms</option>
    <option value="1">WPF</option>

    jueves, 5 de julio de 2018 11:11
  • Si comparo ese SELECT con el SELECT original de su pregunta, solamente veo que falta la clase "browser-default".  ¿Es esto lo único que le hace falta para completar el uso de materialize?

    Otra cosa:  ¿Esos valores vienen de base de datos?  Es decir, ¿ViewBag.NivelSeg se llena a partir de una consulta?


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 5 de julio de 2018 18:17
  • Si, los viewbag son variables q se completan con datos de unas tablas de base de datos
    jueves, 5 de julio de 2018 18:35
  • Ok, ¿y qué le falta al <select> generado para servir con materialize?

    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 5 de julio de 2018 18:41
  • Hola!!!...

    creo que no se estan dando a entender o hay detalles minimos que no se logran entender, así que veamos si yo logre entender esta encrusijada.

    tu lo que quieres es utilizando ViewBag desde el controlador definir una Propiedad dinamica que contendra una lista de valores que tu quieres mostrar en un tag "select"

    ejemplo basico:

            public ActionResult Index() {
    
                List<Fruta> frutas = new List<Fruta>() {
                    new Fruta { Id = 1, Nombre = "Mango" },
                    new Fruta { Id = 2, Nombre = "Orange" },
                    new Fruta { Id = 3, Nombre = "Apple" }
                };
    
                this.ViewBag.Frutas = frutas;
                return View();
            }
    

    basicamente he creado un list para ejemplificar el caso y asignado este list a ViewBag en la propiedad "Frutas", ahora en la vista:

    <div>
        @Html.DropDownList("appFrutas", new SelectList(ViewBag.Frutas, "Id", "Nombre", "Nombre"), "(Seleccione)", new { @class = "materialze", @data_val_number = "Solo de prueba" })
    </div>

    en la vista he agregado el DropDownList y al final he agregado un par de atributos adicionales los cuales incluyen la clase que renderizara el tag "select" y una propiedad o atributo más.

    y al ejecutar este vista el resultado es:

    la generacion de los datos a publicar pueden cambiar de origen como en tu caso puede ser el resultado a una consulta a una base de datos..

    la pregunta es ¿Es este el resultado que buscas? o tampoco entendi!!!!.

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    viernes, 6 de julio de 2018 3:06
  • a ver, ahora mismo lo que yo tengo es esto:

     @Html.DropDownList("APP_Tipo", New SelectList(ViewBag.Tipo, "ATA_IdTipoApp", "ATA_Descripcion", "ATA_Descripcion"), "Seleccione Tipo")

    que si haces una inspeccion del codigo con el navegador encuentras esto:

    <select name="APP_Tipo" class="valid" id="APP_Tipo" data-val-number="The field Tipo must be a number." data-val="true"><option value="">Seleccione Tipo</option>
    <option value="3">Access</option>
    <option value="5">SilverLight</option>
    <option selected="selected" value="0">Web</option>
    <option value="6">Web MVC</option>
    <option value="4">WebService</option>
    <option value="2">WinForms</option>
    <option value="1">WPF</option>
    </select>

    pero lo que yo quiero hacer es eliminar el dopdownlist y sustituirlo por un select

    <select name="APP_Tipo" class="valid" id="APP_Tipo" data-val-number="The field Tipo must be a number." data-val="true"><option value="">Seleccione Tipo</option>

    donde los datos a listar vengan en la variable viewbag,

    ¿existe algun parametro que indique al select los datos a listar sin tener que ponerlos tu a mano en una lista tipo

    <option value="3">Access</option>
    <option value="5">SilverLight</option>
    <option selected="selected" value="0">Web</option>
    <option value="6">Web MVC</option>
    <option value="4">WebService</option>
    <option value="2">WinForms</option>
    <option value="1">WPF</option>

    ?

    ejemplo:

    <select name="APP_Tipo" class="valid" id="APP_Tipo" data=viewbag.tipo>

    ¿esto se podria hacer?

    viernes, 6 de julio de 2018 7:45
  • Desafortunada mente no se puede, de esta manera es como funciona (no dire la programacion web) el HTML, si vas a programar para web tendras que cambiar la mentalidad que tienes para programar para escritorio.

    Pero veras como segun vayas entrando a la parte web vas cambiado de parecer...

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    viernes, 6 de julio de 2018 15:01
  • Realmente no entiendo por qué el <select> resultante del @Html.DropDownList no le satisface.  Es una manera de hacerlo.  También puede hacerse "semi a mano" en el view con un foreach, pero realmente no veo el beneficio por ninguna parte.

    Si usara AngularJS, podría generarlo del lado del cliente con ngRepeat, pero imagino que es más complicado a estas alturas pasar a ese modelo.  Ah, y AngularJS tiene algo especializado para <select> ahora que recuerdo y si es que no recuerdo mal.

    Pero en fin, creo que no hay manera de satisfacer a este usuario.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    viernes, 6 de julio de 2018 16:38
  • El problema no es como se hace o popularizan los datos el problema segun veo yp es como lo qjiere o piensa el usuario que deberia hacer ya que hacer como actualmente funciona para el es ponerlo en duro, cree o piensa que al instanciar la propiedad a una variable tendra mas flexibilidad, entonces es falta de conocimiento de como funciona la programacion web.

    Es mi punto de vista del problema que no es problema.


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    viernes, 6 de julio de 2018 17:45
  • Correcto, yo también pienso que no es problema, pero no logro hacer que me diga qué le faltaría al SELECT para funcionar con materialize, para así darle la solución con @Html.DropDownList, que es lo más lógico.  Pienso que le falta la clase, y si así es, pues ya le enseñaste cómo ponerla con @Html.DropDownList.  Veremos.

    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    viernes, 6 de julio de 2018 17:49
  • Tu estas igual que el ya! Jajajaja... Lo que el no quiere es ver esto en el HTML

    <option.... >

    <option.... >

    A el lo que le gustaria ver es

    <select ... Items=viewbag.Ejemplo />

    Creo yo eso es lo que quiere a su ultima respuesta


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    viernes, 6 de julio de 2018 17:56
  • Jaja, ¿será?  No, yo creo que no porque su pregunta original muestra un ejemplo de un SELECT con opciones que él asegura "funciona con materialize".  La pregunta original, que sí, seguramente a estas alturas ya está desvirtuada, es cómo hacer un SELECT que funcione con materialize a partir de una lista en el ViewBag.  Mi respuesta sería usar @Html.DropDownList y asegurándonos que el SELECT generado satisface los requerimientos de materialize.  Necesito entonces que él compare el SELECT generado contra los requerimientos de materialize (yo no lo voy a hacer) y me diga qué le fata para que funcione.  Al fin y al cabo, un SELECT tiene que tener OPTIONs.

    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    viernes, 6 de julio de 2018 18:11
  • Hola pit29:

    Creo que tu duda yo la he resuelto de otro modo, pero al fin y al cabo, por lo que he entendido de este post, es tu escenario:

    En mi caso me he generado un modelo de datos que yo llamo Pkey_Descripcion

        public class Pkey_Descripcion
        {
            public int PKEY { get; set; }
            public string DESCRIPCION { get;set; }
      
        }

    Dado que lo utilizo en muchos sitios, para no devolver un anónimo.

    Desde mi controller hacia la vista

    public ActionResult crear() { var registro = new Facturacion(); var diccionario = new NivelesControlMnt(cargarDatosNavegacion(),cadCon).obtenerRegistrosModelo_PkeyDescripcion(41, 49); ViewBag.diccionario = diccionario; /* este es el modelo de datos que puede obtener mediante una petición JavaScript o cualquier otro método para llenar el select */

    ... /* en mi código la vista tiene otro modelo de dato, que es el que retorno */ return View(registro); }

    En mi vista.

    @model ecoSoftWEB.Models.Facturacion
    
    @{
        ViewBag.Title = "Ejemplo";
        IEnumerable<ModelosGenericos.Pkey_Descripcion> diccionario = ViewBag.Diccionario;
    }
    
    <h2>CREACION DE @diccionario.FirstOrDefault(c=> c.PKEY == nc).DESCRIPCION; </h2>
      
      @Html.DropDownListFor(n => n.NIVELCONTROL, 
                             new SelectList(diccionario, "PKEY", "DESCRIPCION"))
    /* vinculo el diccionario, con un campo de mi modelo, que en este caso es un int, que encaja con el PKEY, del modelo de Pkey Descripción */

    Utilizó el value del select, al vincularlo con el campo nivelControl, para cuando, en mi caso, realilzó la siguiente operación, este ya este en el modelo de la vista que envía al controller, y no tengo que preocuparme de recuperar el valor del Select.

    Espero te sirva de ayuda.

    Un saludo

    sábado, 7 de julio de 2018 6:00