根据MVC 4上的UserName形成视图

时间:2013-10-10 07:57:06

标签: c# asp.net-mvc session asp.net-mvc-4 razor

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

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

3 个答案:

答案 0 :(得分: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");  
    }
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

@( User.Identity.Name )

然后你可以删除

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

来自控制器和

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

从视图