从Controller到Razor View的LINQ查询中获取详细信息

时间:2018-04-18 22:33:23

标签: c# linq

目前正在尝试在我的应用程序中构建一个公告,其中登录用户只需在文本框中输入内容,然后显示结果以及其他公告列表。

我的问题是我不想显示名称的下拉框,我只想要登录的管理员ID发布。仅供参考,我在这个应用程序中搞砸了我的管理员,他们的ID与他们的用户名不同,但他们的用户名是相同的,这就是我获取他们ID的方式。

我想在我的剃刀页面的HiddenFor中存储linq查询的结果。我一直在尝试使用ViewBags,但我只是无法将类型'int'隐式转换为'system.collections.ienumerable'

这是我的控制器的创建部分:

al_list <- list('a' = c('b', 'c'),
                "z" = c('a', 'c', 'y'),
                "k" = c('l', 'h', 'b'),
                "j" = c('h'))

el2 <- lapply(names(al_list), function(x){
  tibble(from = x,
         to = al_list[[x]])
}) %>%
  bind_rows

g2 <- graph_from_data_frame(el2)

我的剃刀观点:

    // GET: Bulletins/Create
    public ActionResult Create()
    {
        string username = Membership.GetUser().UserName;

        var getAdmin = (from a in db.Admins
                        where username == a.AdminUsername
                        select a.AdministrationId).SingleOrDefault();


        ViewBag.AdministrationId = new SelectList(db.Admins, "AdministrationId", "AdministratorName");
        return View();
    }

    // POST: Bulletins/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "BulletinsID,DetailsOfBulletin,AdministrationId")] Bulletins bulletins)
    {
        if (ModelState.IsValid)
        {
            string username = Membership.GetUser().UserName;

            var getAdmin = (from a in db.Admins
                            where username == a.AdminUsername
                            select a.AdministrationId).SingleOrDefault();

            db.Bulletins.Add(bulletins);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.AdministrationId = new SelectList(db.Admins, "AdministrationId", "AdministratorName", bulletins.AdministrationId);
        return View(bulletins);
    }

老实说找不到任何东西,所以任何帮助都会受到赞赏。 X

1 个答案:

答案 0 :(得分:0)

首先,您应该实现查询以从db获取所有管理对象:

var adminIds = db.admins.Select(a => a.Id).ToList();
ViewBag.AdministrationIds = adminIds;

然后,如果您使用ViewBag访问视图中的管理ID,则需要对它们进行预处理,并使用ID作为值呈现隐藏的输入:

@{
    foreach (var item in ViewBag.AdministrationIds)
    {
        <input type ="hidden" value="@item" />
    }
}