如何将语法从@ Html.RadioButtonFor迁移到@ Html.DropdownlistFor?
我必须将一些具有单选按钮列表的语法迁移到下拉列表。这是由于页面屏幕间距问题引起的。
将语法从RadioButtonFor更改为DropdownlistFor并没有帮助。
<div class="col-sm-1">
@foreach (var item in Model.ExcersiseLevelList)
{
@Html.RadioButtonFor(model => model.TimesPerDay, item.ID, new { @id = "TimesPerDay" + item.ChoiceText }) @: @item.ChoiceText
}
<span asp-validation-for="TimesPerDay" class="text-danger"></span>
</div>
答案 0 :(得分:0)
这应该有效:
<div class="col-sm-1">
@Html.DropDownListFor(m => m.TimesPerDay, Model.ExerciseLevelList.Select(e => new SelectListItem() { Text = e.ChoiceText, Value = e.ID.ToString() }))
<span asp-validation-for="TimesPerDay" class="text-danger"></span>
</div>
请参阅参考资料:SelectExtensions.DropDownListFor
我不确定您是否可以轻松地为每个下拉列表项分别应用html属性(但是您可以通过方法重载简单地对整个下拉列表执行此操作)
答案 1 :(得分:0)
您可以创建一个类型为List<SelectListItem>
的viewmodel属性,并将其传递为DropDownListFor
选项列表(或<select>
标签助手,具体取决于您的选择)以查看:
模型
public class ViewModel
{
// other properties
public List<SelectListItem> ExerciseLevelSelectList { get; set; }
}
控制器
public IActionResult ActionName()
{
var model = new ViewModel();
// data processing logic here
model.ExerciseLevelSelectList = model.ExerciseLevelList.Select(x => new SelectListItem
{
Text = x.ChoiceText,
Value = x.ID.ToString() // string conversion if ID has numeric value
});
return View(model);
}
查看
使用HTML助手:
@Html.DropDownListFor(m => m.TimesPerDay, Model.ExerciseLevelSelectList, ...)
<select asp-for="TimesPerDay" asp-items="Model.ExerciseLevelSelectList"></select>
请注意,Value
实例的SelectListItem
属性具有string
类型(检查here),因此,如果要向其传递数值,则ToString()
是必需的属性。
答案 2 :(得分:0)
您可以尝试
<div class="col-sm-1">
<%:Html.DropDownListFor(model => model.NewMode, new SelectList(Model.PaymentModeList, "PaymentModeDescription", "PaymentModeDescription"), "Select Mode", new { @class = "inputtext width200px" })%>
</div>