这是代码:
@using SSA.Models;
<h2>@ViewBag.Title.ToString()</h2>
@{
using(Html.BeginForm()){
List<SelectListItem> selectList = new List<SelectListItem>();
foreach(Item c in ViewBag.Items)
{
SelectListItem i = new SelectListItem();
i.Text = c.Name.ToString();
i.Value = c.SiteID.ToString();
selectList.Add(new SelectListItem());
}
Html.DropDownList("Casinos", new SelectList(selectList,"Value","Text"));
}
}
断点上的列表selectList显示它有108个值。什么渲染是一个空的形式。没有运行时错误。
注意:我知道使用ViewBag这不是最好的方法。这是丢失的代码,我只想理解为什么它不呈现下拉列表。
答案 0 :(得分:6)
它不会渲染,因为它全部位于剃刀代码块内(即@{ ... }
)。试试这个:
@{
List<SelectListItem> selectList = new List<SelectListItem>();
foreach(Item c in ViewBag.Items)
{
SelectListItem i = new SelectListItem();
i.Text = c.Name.ToString();
i.Value = c.SiteID.ToString();
selectList.Add(new SelectListItem());
}
}
@using (Html.BeginForm())
{
@Html.DropDownList("Casinos", new SelectList(selectList,"Value","Text"));
}
这是一个用于剃刀语法的quick reference。另外,虽然您已经提到这是丢弃代码,但我还是会提到使用view[1] models[2],只是为了确保您了解它们。如果你需要,我可以提供一个简单的例子。
答案 1 :(得分:1)
public function isAuthorized($user) {
$actions = array("stats","index");
if (in_array($this->action, $actions)) {
return true;
}
return parent::isAuthorized($user);
}