C# 在视图中使用DropDownListFor时如何解决空值问题?
有一个问题我已经排除了一天半,我需要一些帮助。C# 在视图中使用DropDownListFor时如何解决空值问题?,c#,asp.net-mvc,C#,Asp.net Mvc,有一个问题我已经排除了一天半,我需要一些帮助。 代码看起来不错,但问题是它返回Null 我可以在视图侧获得该值的属性。 它抛出: 没有ViewData IEnumerable 这就是我到目前为止所做的,我需要一些帮助,我的视图使用多模型,但是它的正确类名和正确属性是正确的 [HttpPost] public ActionResult CourseList() { var course = new List<string>()
代码看起来不错,但问题是它返回
Null
我可以在视图侧获得该值的属性。
它抛出:
没有ViewData IEnumerable
这就是我到目前为止所做的,我需要一些帮助,我的视图
使用多模型
,但是它的正确类名和正确属性是正确的
[HttpPost]
public ActionResult CourseList()
{
var course = 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 of items here.
List<SelectListItem> select_list = new List<SelectListItem>();
var query = from li in course
select
new SelectListItem
{
Value = li.ToString(),
Text = li.ToString(),
};
select_list = query.ToList();
ViewBag.course = select_list;
eNtsaCourseList eCourse = new eNtsaCourseList();
return View(eCourse);
}
// eNtsaRegCourses.
public class RegCoursesViewModel
{
public eNtsaCourses Courses { get; set; }
public eNtsaCourseList eCourses { get; set; } // I am using this property for my View to access dropdownlist.
public eNtsaDashboardViewModel Dashboard { get; set; }
public List<eNtsaCourseList> lsteNtsaDashboard { get; set; }
public RegCoursesViewModel MainModel { get; set; }
}
public class eNtsaCourseList
{
public string CourseLicence { get; set; }
public string Text { get; set; }
public string Value { get; set; }
public string CourseList { get; set; }
}
@using (Html.BeginForm("CourseList", "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(m => m.eCourses.CourseList, ViewBag.course as List<SelectListItem>)
</div>
</div>
}
[HttpPost]
公共行动结果课程列表()
{
var course=新列表()
{“私有(受版权保护)”、“公共领域”、“知识共享许可证”、“抄送署名”、“抄送署名共享”、“抄送署名非商业”,
“抄送归属非商业性股份”、“抄送归属非指令”、“抄送归属非商业性无指令”
};
//这里是项目列表。
列表选择_List=新建列表();
var query=来自过程中的li
选择
新建SelectListItem
{
Value=li.ToString(),
Text=li.ToString(),
};
选择_list=query.ToList();
ViewBag.course=选择\u列表;
eNtsaCourseList eCourse=新的eNtsaCourseList();
返回视图(eCourse);
}
//课程设置。
公共类RegCoursesViewModel
{
公共科目课程{get;set;}
public eNtsaCourseList eCourses{get;set;}//我正在将此属性用于我的视图以访问dropdownlist。
公共EntsDashBoardViewModel仪表板{get;set;}
公共列表lsteNtsaDashboard{get;set;}
public RegCoursesViewModel MainModel{get;set;}
}
公共类eNtsaCourseList
{
公共字符串{get;set;}
公共字符串文本{get;set;}
公共字符串值{get;set;}
公共字符串CourseList{get;set;}
}
@使用(Html.BeginForm(“课程列表”、“主页”、FormMethod.Post))
{
内容许可证
@DropDownListFor(m=>m.eCourses.CourseList,ViewBag.courseas列表)
}
我没有为您提供解决方案,但您不必要地实例化了select\u list
,然后将其设置为query.ToList()
。您可以将其声明为List select\u List
@Audiopolis我也试过了,问题在视图端,请将其视为空。我现在正在调试属性名称。您是否也在HttpGet
中填充了ViewBag.course
,因为您已经显示了POST
代码?