我只是想把一个SelectList放到ViewBag中,但我不能立即访问它。
这是我的代码:
// GET: Content/CreateSerie
public ActionResult CreateSerie()
{
ViewBag.originalLang = new SelectList(db.Lang, "originalLang", "originalLang");
return View();
}
如果我使用调试器在ViewBag.originalLang
赋值后右步并使用表达式赋值器,我得到
但是,如果我深入了解ViewBag,我可以看到
这真的很奇怪,我不知道为什么我无法正常访问它。当然,我也无法从视图中访问它。
编辑:这是我的观点,正如erdiyılmaz所要求的那样:
@model e08projh17.Models.Content
@{
ViewBag.Title = "Créer une série";
@Styles.Render("~/Content/css")
@Styles.Render("~/Content/themes/base/css")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/jqueryui")
}
<h2>CreateSerie</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Content</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<!-- Lots of stuff ... -->
<div class="form-group">
@Html.LabelFor(model => model.originalLang, "Langue originale", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.originalLang, (SelectList)ViewBag.originalLang, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.originalLang, "", new { @class = "text-danger" })
</div>
</div>
<!-- Lots of stuff ... -->
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>@Html.ActionLink("Back to List", "Index")</div>
@section Scripts { @Scripts.Render("~/bundles/jqueryval") }
答案 0 :(得分:2)
试试这个:
@Html.DropDownList("originalLang", null, htmlAttributes: new { @class = "form-control" } })
在您的控制器中,您不会将模型返回到视图中。return View(/* empty here */);
所以我不知道您使用DropDownListFor
的原因。而是使用DropDownList
答案 1 :(得分:1)
这是因为ViewBag是动态类型,这意味着它在运行时被解析。
如果您单步执行调试器,则表示您正在查看预编译的代码,并且DLR尚未解析ViewBag对象,因此您无法解析该属性。
当您“深入”时,您在ViewBag中看到的是有关如何收集数据以进行解决的实施细节。
答案 2 :(得分:1)
尝试下拉列表
@Html.DropDownListFor(model => model.originalLang, (IEnumerable<SelectListItem>)ViewBag.originalLang, new { htmlAttributes = new { @class = "form-control" } })