剃刀DDL到模型

本文关键字:模型 DDL 剃刀 | 更新日期: 2023-09-27 17:52:37

我正试图让我的头周围下拉列表与MVC,这似乎是失败的我。我一直在修修补补下面的代码,但不能得到正确的

我想要实现的很简单-硬编码一些下拉选项在控制器中,让他们出现在Razor渲染的html中,当一个选项被选中时,所选择的值被绑定回模型中的字符串属性。

使用下面的代码,我无法从视图中访问li

我看过其他指南,但我还没能使它工作,是绑定模型对我来说是最好的选择,考虑到我想要实现的,或者ViewBag等会更好?

谁能告诉我哪里错了?

public class ViewModel {
    public string MyOption { get; set; } }
<<p> 视图/strong>
@model ViewModel
@Html.DropDownListFor(m => m.MyOption, li, "--Select--")
控制器

public ActionResult Index()
        {
            List<SelectListItem> li = new List<SelectListItem>();
            li.Add(new SelectListItem { Text = "Option One", Value = "option1" });
            li.Add(new SelectListItem { Text = "Option Two", Value = "option2" });
            return View(li);
        }

剃刀DDL到模型

如果您想使用它,则需要将MyOption传递给view。一个有效的选择是创建一个视图模型类,其中包含在视图上需要处理的所有信息

ViewModel

public class ViewModel
{
    public IList<SelectListItem> ItemList {get; set;}
    public string MyOption { get; set; }
}
<<p> 视图/strong>
@Html.DropDownListFor(m => m.MyOption, Model.ItemList, "--Select--")
控制器

public ActionResult Index()
{
    var li = new List<SelectListItem>();
    li.Add(new SelectListItem { Text = "Option One", Value = "option1" });
    li.Add(new SelectListItem { Text = "Option Two", Value = "option2" });
    var viewModel = new ViewModel 
    { 
        ItemList = li, 
        MyOption = [here your code to fill this] 
    }
    return View(viewModel);
}

您需要确保您在视图中声明了您的模型,以便访问该模型的任何属性或修饰符

@model Namespacehere.Models.modelclassname

那么你应该能够使用像

这样的东西
@Html.DropDownListFor(m => m.MyOption, model, "--Select--")