在ASP.NET身份
中 AspNetUsers
表id
列
我创建了另一个表名Staff
我将两个表格与AspNetUsers
id
关联到员工表格列Staff_ID
(两个表都是nvarchar(128))
我在视觉工作室CRUD工作人员
当我创建新记录时,在Staff_ID
字段中,它会在下拉列表中向我显示AspNetUser
中的完整用户列表。
我不想要这个下拉列表。
我想将记录保存到用户Logged-in。 (我不想从列表中选择)
// POST: Staffs/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Staff_ID,First_Name,Designation,Department,Employment_Type,Clinic_ID,Title,Middle_Name,Last_Name,DOB,Gender,Marital_Status,Religion,CNIC,Nationality,Hire_Date,Employment_Status,Address,City,Country,Email,Contact_Number,Education,Salary,Leave_Avail,Leave_Details,Loan_Details")] Staff staff)
{
if (ModelState.IsValid)
{
//db.Staffs.Add(staff);
//db.SaveChanges();
//return RedirectToAction("Index");
staff.Staff_ID = User.Identity.GetUserId();
db.Staffs.Add(staff);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.Staff_ID = new SelectList(db.AspNetUsers, "Id", "ClinicName", staff.Staff_ID);
ViewBag.Country = new SelectList(db.Countries, "Country_ID", "Country_Name", staff.Country);
return View(staff);
}
我的观点:
<div class="form-group">
@Html.LabelFor(model => model.Staff_ID, "Staff_ID", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("Staff_ID", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Staff_ID, "", new { @class = "text-danger" })
</div>
</div>
答案 0 :(得分:0)
首先,这只是一对多的脚手架的默认行为。您不必使用脚手架代码,事实上,您不应该鼓励使用脚手架代码。其次,你把它建模为一对多,这显然是不正确的。 A&#34;用户&#34;是一个&#34;员工&#34;。第三,这是一个关系应该是你的第一个线索,这是完全错误的建模。这种关系意味着继承。因此,Staff
应该继承ApplicationUser
,因为它只是一种更具体的&#34;用户&#34;。
身份存在的全部原因是提供这种级别的扩展。否则,您可以坚持使用ASP.NET Membership的配置文件模型。