none
Manejo de Variables y Campos de Base de datos RRS feed

  • Pregunta

  • Tengo una variable llamada usu  que contiene el nombre del usuario activo

    Luego en una tabla tengo un campo llamado usuario

    cuando se hace el scafolding la vista create me dice lo siguiente:

    @Html.EditorFor(model=>model.usuario)

    Esto permitira que el usuario ingrese un dato para que posteriormente sea guardado en la tabla, pero lo que yo quiero es que no permita eso si no que la variable usu sea la que se guarde en la tabla en el campo usuario.

    Alguien me puede ayudar

    cualquier cosa mi e-mail es jpinedareina@hotmail.com

    lunes, 4 de febrero de 2013 14:39

Respuestas

  • Muy buenas

    Me parece que ya se cual es tu problema, que espero que se lo que estoy pensando. Imaginemos la siguiente situacion:

    public ActionResult Nuevo()

    { Return view(); }

    [HttpPost]

    public ActionResult Nuevo (TuModelo _modelo)

    { Return view(); }

    Hasta este punto en nuestro controllador tenes los dos ActionResult, el primero es para el Get y el sengundo para el Post, para el caso del post como puedes ver recibe un modelo el cual sera el que se guardara en la base de datos. Para ambos casos retornan una vista.

    Cuando generas las vista para poder capturar los datos, lo haces a partir del Get, y este te genera los campo a partir de tu modelo, pero al hacer esto estos campos no tienen ningún valor asignado; y esto es porque lo estas haciendo es retornar una vista vacia; asumo que la asignación de la variable lo tienes de la siguiente manera:

    public ActionResult Nuevo()

    {

    var usu = "pepito"; // asumo que aqui es donde haces la asignación de la variable

    Return view();

    }

    Me imagino que tu logica es que en cuanto se cargue la pagina (view), este ya debe de cargar en el campo correspondiente el codigo de usuario, pero lo que ocurre es que debes de hacer es que  debes de retornar el modelo; me explico mejor con codigo es algo asi:

    

    public ActionResult Nuevo()

    {

    TuModelo _modelo = new TuModelo();

    _modelo.usuario = "pepito";

    Return view(_model);

    }

    Como puedes ver al momento en que se cargue la vista esta devuelve un modelo, en el cual ya tiene la variable de usuario, lo que tendrias que hacer es ocualtar el campo para que este no sea editable puedes ocupar el HiddenFor, para ello; en lo personal yo lo que hago es asignar la parte del usuario en el controllador, pero cuando este llega hasta el post, es decir hasta que se envia el formulario para ser guardado, si tienes preguntas no dudes en preguntar que estamos para ayudar.

    Saludos


    Juan Gómez

    • Marcado como respuesta JPINEDAREINA lunes, 11 de febrero de 2013 23:58
    miércoles, 6 de febrero de 2013 21:15

Todas las respuestas

  • Tengo una variable llamada usu  que contiene el nombre del usuario activo

    Luego en una tabla tengo un campo llamado usuario

    cuando se hace el scafolding la vista create me dice lo siguiente:

    @Html.EditorFor(model=>model.usuario)

    Esto permitira que el usuario ingrese un dato para que posteriormente sea guardado en la tabla, pero lo que yo quiero es que no permita eso si no que la variable usu sea la que se guarde en la tabla en el campo usuario.

    Alguien me puede ayudar

    cualquier cosa mi e-mail es jpinedareina@hotmail.com


    lunes, 4 de febrero de 2013 17:52
  • Bueno y... ¿como tienes tu controlador? Tu modelo? .. pon algo de código para tener mas ayuda.

    Saludos!


    Miguel Salazar
    -> Thanks Network!

    martes, 5 de febrero de 2013 21:56
  • Muy buenas

    JPINEDAREINA, ¿Como guardas el nombre de usuario, en una Session, en una cookie o empleas MembershipProvider?, y por lo que pusiste, @Html.EditorFor(model=>model.usuario),considero que no es una buena idea poner el nombre del usuario activo en el modelo, agrega mas codigo para que te ayudemos mejor.

    Saludos


    Juan Gómez

    martes, 5 de febrero de 2013 22:54
  • Por lo que describes, presiento que necesitas algo así:

    @Html.HiddenFor(model => model.usuario, new { value=@Model.usuario})
    Con esto, el contenido que viene en el campo "usuario" se iría de regreso en el mismo.

    Saludos

    martes, 5 de febrero de 2013 22:56
  • ok voy a ser un poco mas especifico

    tengo la variable de sesion que es @User.Identity.Name

    lo que busco es almacenar esa variable en un campo de la tabla llamada usuario al momento de crear el registro

    @Html.EditorFor(model=>model.usuario) 

    que me hace falta para tener exito

    miércoles, 6 de febrero de 2013 13:45
  • Muy buenas

    JPINEDAREINA, ¿Porque tratas de devolver en la vista el código de usuario?, la asignacion podes hacerla perfectamente en el controllador asi podes quitar de la vista todo lo concerniente al model => model.usuario, de esa manera no lo expones en la vista; pero si te es necesario tener ese dato en la View podes hacer lo que te recomiendan Martín Martínez; pero igual siempre tendras otras alternativas, como lo son las variables de Session, las Cookies, MembershipProvider.

    Saludos


    Juan Gómez

    miércoles, 6 de febrero de 2013 16:30
  • DE ANTEMANO gracias por la colaboracion pero todavia no e podido resolver

    en el controlador tengo

    var usu = "pepito"

    por decir algo

    en la vista create tengo

    @Html.HiddenFor(model => model.usuario)

    Pero cuando pongo submit no se me guarda nada porque obviamente no se a escrito nada pero lo que quiero es que se almacene un valor declarado por una variable en este casi @usu dentro de la tabla usuario

    ustedes disculpen pero soy nuevo en esto, y necesitare bastante ayuda

    gracias

    miércoles, 6 de febrero de 2013 16:49
  • Muy buenas

    Me parece que ya se cual es tu problema, que espero que se lo que estoy pensando. Imaginemos la siguiente situacion:

    public ActionResult Nuevo()

    { Return view(); }

    [HttpPost]

    public ActionResult Nuevo (TuModelo _modelo)

    { Return view(); }

    Hasta este punto en nuestro controllador tenes los dos ActionResult, el primero es para el Get y el sengundo para el Post, para el caso del post como puedes ver recibe un modelo el cual sera el que se guardara en la base de datos. Para ambos casos retornan una vista.

    Cuando generas las vista para poder capturar los datos, lo haces a partir del Get, y este te genera los campo a partir de tu modelo, pero al hacer esto estos campos no tienen ningún valor asignado; y esto es porque lo estas haciendo es retornar una vista vacia; asumo que la asignación de la variable lo tienes de la siguiente manera:

    public ActionResult Nuevo()

    {

    var usu = "pepito"; // asumo que aqui es donde haces la asignación de la variable

    Return view();

    }

    Me imagino que tu logica es que en cuanto se cargue la pagina (view), este ya debe de cargar en el campo correspondiente el codigo de usuario, pero lo que ocurre es que debes de hacer es que  debes de retornar el modelo; me explico mejor con codigo es algo asi:

    

    public ActionResult Nuevo()

    {

    TuModelo _modelo = new TuModelo();

    _modelo.usuario = "pepito";

    Return view(_model);

    }

    Como puedes ver al momento en que se cargue la vista esta devuelve un modelo, en el cual ya tiene la variable de usuario, lo que tendrias que hacer es ocualtar el campo para que este no sea editable puedes ocupar el HiddenFor, para ello; en lo personal yo lo que hago es asignar la parte del usuario en el controllador, pero cuando este llega hasta el post, es decir hasta que se envia el formulario para ser guardado, si tienes preguntas no dudes en preguntar que estamos para ayudar.

    Saludos


    Juan Gómez

    • Marcado como respuesta JPINEDAREINA lunes, 11 de febrero de 2013 23:58
    miércoles, 6 de febrero de 2013 21:15
  • gracias a todos me funciono bien y pude lograr lo que necesitaba
    lunes, 11 de febrero de 2013 23:50