我使用API获取数据并将其分配给查看包,但在运行时它显示了一个错误。
List<DevInfo> DevList = await RestApi.Instance.GetAllDevAsync();
var nameT = DevList.Select(a=>a.Name).ToList();
ViewBag.datasourceDevList = nameT;在剧本里。
var nameList = <%= new JavaScriptSerializer().Serialize("@ViewBag.datasourceDevList") %>;我想要生成下拉列表。
if (nameList != '') {
var tableHtml;
$.each(JSON.parse(nameList), function (index, value) {
//tableHtml += "<option value=" + value.Name + ">" + value.Name + "</option>";
console.log(value);
});
/*$("#selectTrainer").html(tableHtml);*/
$("#selectTrainer").append(tableHtml);
}发布于 2021-08-27 06:45:47
您可以通过以下方式实现生成选项,而不是在javascript中调用JavaScriptSerializer() (这使得代码看起来很复杂):
解决方案1:使用剃须刀语法
视图
<select id="selectTrainer">
@if (ViewBag.datasourceDevList != null)
{
foreach(var option in ViewBag.datasourceDevList)
{
<option value="@option.Name">@option.Name</option>
}
}
</select>解决方案2:将IEnumerable<SelectListItem>传递给@Html.DropDownListFor
使用ViewBag元素设置IEnumerable<SelectListItem>。@Html.DropDownListFor将根据列表项生成选项。
控制器
using System.Linq;
ViewBag.datasourceDevList = DevList
.Select(x => new SelectListItem { Text = x.Name, Value = x.Name } )
.ToList();视图
@Html.DropDownListFor(m => m.DevID,
(IEnumerable<SelectListItem>)ViewBag.datasourceDevList,
htmlAttributes: new
{
@id = "selectTrainer"
})参考文献
https://stackoverflow.com/questions/68948315
复制相似问题