这是我用来绑定我的下拉菜单的代码,剃须刀期待;
在最后,如下所述
@{
ViewBag.test = Model.Sample.Select(o => new SelectListItem
{
Text = o.Name,
Value = o.sampleId.ToString()
}
);
}
但是当下拉呈现时;
,我在 UI 中的下拉旁边
如果我删除分号,则会出现黄屏编译错误
难道我做错了什么?
这是我用来绑定我的下拉菜单的代码,剃须刀期待;
在最后,如下所述
@{
ViewBag.test = Model.Sample.Select(o => new SelectListItem
{
Text = o.Name,
Value = o.sampleId.ToString()
}
);
}
但是当下拉呈现时;
,我在 UI 中的下拉旁边
如果我删除分号,则会出现黄屏编译错误
难道我做错了什么?
您没有在此代码段中呈现任何下拉菜单。您所做的就是为 分配一个值ViewBag.test
,是的,最后应该有一个;
有效的 C# 代码:
@{
ViewBag.test = Model.Sample.Select(o => new SelectListItem
{
Value = o.sampleId.ToString(),
Text = o.Name,
});
}
你应该做的是删除;
你最有可能在@Html.DropDownList
助手调用后留下的。
还要记住,ViewBag
在视图中设置值是不好的做法。使用ViewBag
是不好的做法,但这是另一回事(见下文)。你应该做的是在渲染视图的控制器动作中分配这个值。获取数据不是视图的责任。视图的职责是以强类型视图模型的形式显示发送给它的数据,该视图模型是在控制器操作中创建的。
回顾一下:
您首先编写一个视图模型:
public class MyViewModel
{
public string SelectedValue { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
然后是一个控制器动作填充这个视图模型并将其传递给视图:
public ActionResult SomeAction()
{
IEnumerable<SomeDomainModel> data = ... hit your DAL to retrieve the model
// Now build a view model
var model = new MyViewModel();
model.Items = data.Select(o => new SelectListItem
{
Value = o.sampleId.ToString(),
Text = o.Name,
});
// pass the view model to the view
return View(model);
}
最后你有一个对应于你之前设计的视图模型的强类型视图:
@model MyViewModel
...
@Html.DropDownListFor(x => x.SelectedValue, Model.Items)