C# 从控制器到Razor视图的LINQ查询中获取详细信息

C# 从控制器到Razor视图的LINQ查询中获取详细信息,c#,linq,C#,Linq,目前正在尝试在我的应用程序中构建公告,登录的用户只需在文本框中键入一些内容,结果就会与其他公告列表一起显示 我的问题是,我不想显示姓名的下拉框,我只想要登录发布的管理员ID。仅供参考,我在这个应用程序中搞砸了我的管理员,他们的ID和他们的用户名不同,但他们的用户名是相同的,这就是我获取他们ID的方式 我想在我的razor页面的HiddenFor中存储linq查询的结果。我一直在尝试使用ViewBags,但我刚刚得到无法将类型“int”隐式转换为“system.collections.ienume

目前正在尝试在我的应用程序中构建公告,登录的用户只需在文本框中键入一些内容,结果就会与其他公告列表一起显示

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

我想在我的razor页面的HiddenFor中存储linq查询的结果。我一直在尝试使用ViewBags,但我刚刚得到无法将类型“int”隐式转换为“system.collections.ienumerable”

以下是我的控制器的创建部分:

    // 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);
    }
我的观点是:

 @Html.HiddenFor(model => model.AdministrationId)

老实说,我找不到任何帮助,所以我们将不胜感激。x

首先,您应该具体化查询,以从数据库中获取所有管理对象:

var adminIds = db.admins.Select(a => a.Id).ToList();
ViewBag.AdministrationIds = adminIds;
然后,如果使用ViewBag访问视图中的管理员ID,则需要对其进行foreach,并以ID作为值呈现隐藏输入:

@{
    foreach (var item in ViewBag.AdministrationIds)
    {
        <input type ="hidden" value="@item" />
    }
}
@{
foreach(ViewBag.AdministrationId中的变量项)
{
}
}