【问题标题】:Cant Access @Html.DropDownList value无法访问 @Html.DropDownList 值
【发布时间】:2017-05-20 06:16:10
【问题描述】:

我是 ASP.Net MVC 的新手,尝试使用 viewbag 绑定下拉列表并在控制器中访问它,
下面是我的代码

控制器构造函数

 public HomeController()
    {
        List<SelectListItem> list = new List<SelectListItem>();
        list.Add(new SelectListItem { Text="HO", Value="HO" });
        list.Add(new SelectListItem { Text = "BIHAR", Value = "BIHAR" });
        list.Add(new SelectListItem { Text = "CHHATTISGARH", Value = "CHHATTISGARH" });
        list.Add(new SelectListItem { Text = "HARYANA", Value = "HARYANA" });
        list.Add(new SelectListItem { Text = "Madhya PRADESH", Value = "Madhya PRADESH" });
        list.Add(new SelectListItem { Text = "PUNJAB", Value = "PUNJAB" });
        list.Add(new SelectListItem { Text = "RAJASTHAN", Value = "RAJASTHAN" });
        list.Add(new SelectListItem { Text = "UTTAR PRADESH (E)", Value = "UTTAR PRADESH (E)" });
        list.Add(new SelectListItem { Text = "UTTAR PRADESH (W)", Value = "UTTAR PRADESH (W)" });
        list.Add(new SelectListItem { Text = "UTTARAKHAND", Value = "UTTARAKHAND" });
        ViewBag.StateList = list;
    }

也使用模型

public class BR_Model
{
    public string State;
    public DateTime date;
}

查看

                @Html.DropDownList("StateList", ViewBag.StateList as IEnumerable<SelectListItem>, new { @class = "form-control  input-sm" })

想做这样的事情

                @Html.DropDownList( here m => m.State , ViewBag.StateList as IEnumerable<SelectListItem>, new { @class = "form-control  input-sm" })

但在下拉列表中使用 m=>m.State 时出错 如何让它在控制器中访问它的值

更新: 在模型中声明了一个选择列表并尝试了 DropdownlistFor

                @Html.DropDownListFor(m=>m.State,Model.list as IEnumerable<SelectListItem> ,new { @class = "form-control  input-sm" })

【问题讨论】:

  • 错误是什么?
  • 无法将 Lambda 表达式转换为类型“字符串”,因为它不是委托类型
  • 你需要使用 DropDownListFor
  • 它必须是 @Html.DropDownListFor(m => m.State , ViewBag.StateList as IEnumerable, new { @class= "form-control input-sm" })跨度>
  • Thaks,我学到了一种绑定 DropdownList 的新方法,对初学者来说很好的学习,但我的问题是 - 没有在返回视图中传递模型对象,在传递模型对象后它可以工作。再次感谢您的宝贵时间

标签: c# asp.net-mvc


【解决方案1】:

示例:

型号:

public class BR_Model
{
    public string State { get; set; };
    public DateTime Date { get; set; };
}

控制器:

public HomeController()
    {
        [HttpGet]
        public ActionResult Create()
        {
            var list = new List<SelectListItem>
            {
                new SelectListItem {Text = "HO", Value = "HO"},
                new SelectListItem {Text = "BIHAR", Value = "BIHAR"},
                new SelectListItem {Text = "CHHATTISGARH", Value = "CHHATTISGARH"},
                new SelectListItem {Text = "HARYANA", Value = "HARYANA"},
                new SelectListItem {Text = "Madhya PRADESH", Value = "Madhya PRADESH"},
                new SelectListItem {Text = "PUNJAB", Value = "PUNJAB"},
                new SelectListItem {Text = "RAJASTHAN", Value = "RAJASTHAN"},
                new SelectListItem {Text = "UTTAR PRADESH (E)", Value = "UTTAR PRADESH (E)"},
                new SelectListItem {Text = "UTTAR PRADESH (W)", Value = "UTTAR PRADESH (W)"},
                new SelectListItem {Text = "UTTARAKHAND", Value = "UTTARAKHAND"}
            };
            ViewBag.StateList = list;
            return View();
        }

        [HttpPost]
        public ActionResult Create(BR_Model model)
        {
          return View();
        }
    }

查看:

创建.cshtml:

@model BR_Model 

@using (Html.BeginForm("Create", "Home"))//Or use Ajax.BeginForm if you need
{
   <div class="form-group">
    @Html.DisplayNameFor(m => m.State )
    @Html.DropDownListFor(m => m.State , new SelectList((IEnumerable)ViewBag.StateList,"Value","Text",Model.State ))
</div>
    <input type="submit" value="Save" />
}

【讨论】:

    猜你喜欢
    • 2014-03-07
    • 2017-08-03
    • 2011-01-12
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多