首页 > 解决方案 > ASP.NET 使用关联的外键文本值填充下拉列表

问题描述

我对 ASP.NET 非常陌生,目前正在努力将下拉列表绑定到关联的外键表。

我的控制器

public ActionResult Create()
{
    //get current user id 
    ViewBag.UserID = new SelectList(db.UserProfiles, "UserID", "Employer");
    return View();
}

我的观点

<div class="form-group">
  @Html.LabelFor(model => model.UserID, htmlAttributes: new { @class = "control-label col-md-2" })
  <div class="col-md-10">
    @Html.DropDownList("UserID", null, htmlAttributes: new { @class = "form-control" })
    @Html.ValidationMessageFor(model => model.UserID, "", new { @class = "text-danger" })
  </div>
</div>

我的数据库表

数据库表

我在浏览器上的视图

下拉列表的浏览器视图

我还创建了一个登录名以了解哪些用户已登录

[HttpPost]
public ActionResult Index(UserProfile log)
{
    var user = db.UserProfiles.Where(x => x.UserName == log.UserName && x.Password == log.Password).Count();
    if (user > 0)
    {
        return RedirectToAction("Create", "Dashboard");
    }

    else
    {
        return View();
    }
}

总之,在下拉列表中,我希望看到关联的雇主,因此根据表关系将其级联给用户。如果其他雇主与已登录的用户无关,我不想看到他们。实现这一目标的最佳方法是什么?

标签: c#asp.net-mvcasp.net-coreasp.net-mvc-4

解决方案


登录成功后,在重定向到下一页时传递用户 ID。在下一页中使用该用户 ID 从数据库中获取下拉值(其中 userid=loggedinuserid)。现在您将只获得与当前用户相对应的员工。

使用 session 来存储和使用重定向页面中的用户 ID。或者这个链接会帮助你。 带参数的 RedirectToAction


推荐阅读