簡體   English   中英

DropdownlistFor 返回空值,如何解決?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM