根据 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)
如何使用控制器中的会话登录用户?
您可以使用 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)
从视图