Recuperar campos específicos de la base de datos después de la autenticación

En realidad, tengo este método que devuelve todos los campos de mi tabla.

    public ActionResult Index(string username, string searchString)
    {

        var UserLst = new List<string>();

        var UserQry = from d in db.OrderDetails
                       orderby d.Order.Username
                       select d.Order.Username;
        UserLst.AddRange(UserQry.Distinct());
        ViewBag.username = new SelectList(UserLst);

        var user = from m in db.OrderDetails
                     select m;

        if (!String.IsNullOrEmpty(searchString))
        {
            user = user.Where(s => s.Order.FirstName.Contains(searchString));
        }

        if (string.IsNullOrEmpty(username))
            return View(user);
        else
        {
            return View(user.Where(x => x.Order.Username == username));
        }
    }



    [HttpPost]
    public string Index(FormCollection fc, string searchString)
    {
        return "<h3> From [HttpPost]SearchIndex: " + searchString + "</h3>";
    }

Mi tabla se ve así:

Usuario---------Producto----------Precio----------N°Cesta

prueba--------------Objeto1-------------20-----------110

prueba--------------Objeto2-------------84-----------110

nube------------Objeto2-------------84-----------541

Manzana------------Objeto8-------------65-----------874

Lo que quiero es que, cuando mi usuario inicie sesión y vaya a esta página, solo verá filas con su nombre de usuario. En otras palabras, me gustaría que mi método devuelva filas con el nombre de usuario del usuario que inició sesión.

Disculpe mi inglés, deseo que me entienda. Gracias por su ayuda, respuestas, enlaces, tomo todo, soy principiante en asp

preguntado el 31 de julio de 12 a las 12:07

Asignar un campo de nombre de usuario a un producto no parece correcto, ¿no debería asignar roles en su lugar? por ejemplo, administrador/usuario, etc. -

Lo sentimos, ¿cómo puedo configurar esto, devuelve filas donde nombre de usuario = prueba cuando la prueba de usuario está iniciada? No pido la solución, pero al menos una "forma de pensar" (realmente no sé cómo decirlo en inglés). eso esta mas claro? -

@Alternativa: no debería necesitar pasar el nombre de usuario al Index acción, puede obtener el usuario conectado desde el controlador, hay un Usuario propiedad. -

1 Respuestas

Si está utilizando ASP.NET Membership y se une al campo Nombre de usuario de su modelo EF, simplemente llame a User.Identity.Name. Si es así, puede eliminar el parámetro del método:

  public ActionResult Index(string searchString)
    {

...
...

   return View(user.Where(x => x.Order.Username == User.Identity.Name));

Respondido 31 Jul 12, 12:07

funciona, estaba buscando algo más complicado... ¡Gracias a todos, y también sean comprensivos con mi inglés! - Alternative

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.