验证后从DB检索特定字段

时间:2012-07-31 11:47:18

标签: c# asp.net asp.net-mvc asp.net-mvc-3 entity-framework

实际上,我有这个方法,它会返回我表格的所有字段。

    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>";
    }

我的表看起来像这样:

用户名--------- ----------产品价格---------- N°车

测试-------------- Object1 ------------- ----------- 20 110

测试-------------- Object2的------------- ----------- 84 110

云------------- ------------- Object2的84 ----------- 541

苹果------------- ------------- Object8 65 ----------- 874

我想要的是,当我的用户登录时以及他何时访问此页面时,他只会看到带有用户名的行。换句话说,我希望我的方法返回具有登录用户的用户名的行。

对不起我的英语,我希望你能理解我。 谢谢你的帮助,答案,链接,我全拿,我是asp的初学者

1 个答案:

答案 0 :(得分:2)

如果您正在使用ASP.NET成员资格并加入EF模型的用户名字段,则只需调用User.Identity.Name即可。如果是这样,那么您可以从方法中删除参数:

  public ActionResult Index(string searchString)
    {

...
...

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