2012-07-31 64 views
0

实际上,我有这个方法会返回我的表的所有字段。认证后从数据库中检索特定的字段

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

test -------------- Object2 ------------- 84 ----------- 110

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

Apple --- ---------- Object8 ------------- 65 ----------- 874

我想要的是,当我的用户是登录,当他要进入这个页面时,他只会看到带有他的用户名的行。换句话说,我想我的方法返回具有登录用户的用户名的行。

对不起,我希望你能理解我。 感谢您的帮助,答案,链接,我把所有的,我是初学者在asp

+1

你的问题是什么? – 2012-07-31 11:49:47

+0

将用户名字段映射到产品似乎不太合适,您是不是应该将角色映射到其他位置?例如管理员/用户等 – James 2012-07-31 11:56:47

+0

对不起,如何设置此项,返回用户名为test时用户测试登录时的行?我不问这个解决方案,但至少有一种“思维方式”(我真的不知道怎么用英语说)。这更清楚吗? – Alternative 2012-07-31 12:01:44

回答

2

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

public ActionResult Index(string searchString) 
    { 

... 
... 

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

它的工作原理,我正在寻找更复杂的东西......谢谢大家,也用我的英语理解! – Alternative 2012-07-31 12:23:46