根据 MVC 4 中的用户名形成视图

本文关键字:视图 用户 MVC 根据 | 更新日期: 2023-09-27 18:34:38

我使用了 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) 

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

根据 MVC 4 中的用户名形成视图

您可以使用 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");  
    }
}

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

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

@( User.Identity.Name )

然后你可以删除

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

从控制器和

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

从视图