目前正在尝试在我的应用程序中构建一个公告,其中登录用户只需在文本框中输入内容,然后显示结果以及其他公告列表。
我的问题是我不想显示名称的下拉框,我只想要登录的管理员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
答案 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" />
}
}