我使用了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)
如何使用控制器中的会话登录用户?
答案 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)
从视图