1

我使用 ASP.NET 配置并创建了一些具有他们角色的用户。我创建了控制器来create/edit/show详细说明表格中的数据。这是我的创建表单的样子:有两个名为“ Categories”的下拉列表,并且“ Users”。“ Categories”将由用户选择,这很好。“ Users”是任何用户选择另一个用户并插入的下拉列表桌子。那不应该发生。我的问题来了。 如何摆脱下拉列表“ Users”并自动将登录的用户名插入表中? ---人 A 不应该为人 B 添加类别!--- 在视图中,这是将用户放入下拉列表的方式:

@Html.DropDownList("Userid",String.Empty)

我可以分享模型代码,如果需要,控制器代码详细。

提前致谢!

这是我的创建方法:

   public ActionResult Create(icerik icerik)
        {
            if (User != null && User.Identity != null && User.Identity.IsAuthenicated)
{
    string userName = User.Identity.Name;
    User user = db.Users.First(u => u.UserName == userName);
}

            if (ModelState.IsValid)
            {
                db.icerik.Add(icerik);
                db.SaveChanges();
                return RedirectToAction("Index");  
            }

            ViewBag.Kategorid = new SelectList(db.Kategoriler, "Id", "Adi", icerik.Kategorid);
           // ViewBag.Userid = new SelectList(db.Users, "UserId", "UserName", icerik.Userid);

            ViewBag.Userid = new SelectList(db.Users, "UserId", "UserName", icerik.Userid);
            return View(icerik);
        }

这是我在视图中的称呼:

@Html.DropDownList("Userid", String.Empty) 

如何使用控制器中的会话登录用户?

4

3 回答 3

1

您可以使用User该类来获取有关已登录用户的信息。

if (User != null && User.Identity != null && User.Identity.IsAuthenicated)
{
    string userName = User.Identity.Name;
    var user = db.Users.First(u => u.UserName == userName);
}

user现在您在变量中有当前登录的用户。您可以删除视图中用户的下拉列表。

编辑POST在你的行动 中试试这个:

if (ModelState.IsValid)
{
    if (User != null && User.Identity != null && User.Identity.IsAuthenicated)
    {
        string userName = User.Identity.Name;
        var user = db.Users.First(u => u.UserName == userName);

        icerik.UserId = user.UserId;        
        db.icerik.Add(icerik);
        db.SaveChanges();
        return RedirectToAction("Index");  
    }
}
于 2013-10-10T09:57:13.943 回答
0

您可以将登录用户的数据保存在 cookie 或会话中。您可以在需要时轻松地从 cookie 或会话中获取数据。无需在前端显示用户的下拉列表。从后端,您可以从会话或 cookie 中获取数据并将其保存到数据库。我认为这将解决您选择合适用户的问题。

于 2013-10-10T09:16:46.230 回答
0

在您看来,您可以使用以下内容来获取用户名,就像您在控制器中一样

@( User.Identity.Name )

然后你可以删除

ViewBag.Userid = new SelectList(db.Users, "UserId", "UserName", icerik.Userid);

从控制器和

@Html.DropDownList("Userid", String.Empty) 

从视图

于 2013-10-10T11:11:26.953 回答