如何解决DropdownlistFor返回一个空值,如何解决?
我需要一些帮助,我认为我返回的是空值。我想要获得的是创建dropdownlistFor时的值列表。问题是我该如何解决此类错误?以下是我的逻辑,需要有关团队合作方式的帮助。
// Model
// This is for course-list.
// This is for course-list.
public class eNtsaDashboardViewModel
{
public string CourseName { get; set; }
public List<eNtsaDashboardViewModel> CourseLicence { get; set; }
public string Text { get; set; }
public string Value { get; set; }
}
// Mutliple Model
public class RegCoursesViewModel
{
public eNtsaCourses Courses { get; set; }
public eNtsaDashboardViewModel Dashboard { get; set; }
public List<eNtsaDashboardViewModel> lsteNtsaDashboard { get; set; }
public RegCoursesViewModel MainModel { get; set; }
}
// View
@using (Html.BeginForm("SuperAdmin","Home",FormMethod.Post))
{
<div class="form-group row">
<label for="Content-Licence" class="col-sm-3 col-form-label">Content Licence</label>
<div class="col-sm-5">
@Html.DropDownListFor(model => model.Dashboard.CourseLicence,new SelectList(Model.lsteNtsaDashboard)) **// Return a null object.**
</div>
</div>
}
public ActionResult SuperAdmin() {
var list = new List<string>() { "Private(Copyrighted)","Public Domain","Creative Commons Licences","CC Attribution","CC Attribution Share ALike","CC Attribution Non-Commercial","CC Attribution Non-Commercial Share Alike","CC Attribution Non Directive","CC Attribution Non-Commercial No Directives" };
ViewBag.list = list;
return View();
}
解决方法
我建议您这样做
var list = new List<string>() { "Private(Copyrighted)","Public Domain","Creative Commons Licences","CC Attribution","CC Attribution Share ALike","CC Attribution Non-Commercial","CC Attribution Non-Commercial Share Alike","CC Attribution Non Directive","CC Attribution Non-Commercial No Directives" };
List<SelectListItem> select_list = new List<SelectListItem>();
var query = from li in list
select new SelectListItem()
{
Value = li.ToString(),Text = li.ToString(),};
select_list = query.ToList();
ViewBag.list = select_list;
然后在您的view
@Html.DropDownListFor(model => model.Dashboard.CourseLicence,ViewBag.list as List<SelectListItem>)
,
我认为您应该仔细阅读Viewbag概念。 在这里,您是将列表值分配给Viewbag,而不在视图中使用该值。 就您而言,我已经对您的代码进行了一些修改。 在您的控制器中,
public ActionResult SuperAdmin() {
ViewBag.Message = "Your application description page.";
List<SelectListItem> list = new List<SelectListItem>()
{
new SelectListItem { Text = "Private(Copyrighted)",Value = "1" },new SelectListItem { Text = "Public Domain",Value = "2" },new SelectListItem { Text = "CC Attribution Non Directive",Value = "3" },new SelectListItem { Text = "Creative Commons Licences",Value = "4" },};
ViewBag.list = list;
return View();
}
然后更改“视图”的下拉列表以接受Viewbag.list值。 在您的视图中,
@using (Html.BeginForm("SuperAdmin","Home",FormMethod.Post))
{
<div class="form-group row">
<label for="Content-Licence" class="col-sm-3 col-form-label">Content Licence</label>
<div class="col-sm-5">
@Html.DropDownListFor(model => model.Dashboard.CourseLicence,(IEnumerable<SelectListItem>)ViewBag.list)
</div>
</div>
}
这不是处理下拉列表的首选方法,我只是修改了您的代码以使其正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。