[英]DropdownlistFor is returning a null value, how to fix it?
我需要一些幫助,在我看來,我返回的是空值。 我想得到的是創建 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 概念 little mnre。 在這里,您將列表值分配給 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>
}
這不是下拉列表的首選方式,我只是修改了您的代碼以使其正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.