使用Razor在MVC 4中使用DropDownList

use*_*273 130 c# asp.net-mvc razor

我正在尝试创建DropDownList一个剃刀视图.

有人会帮我这个吗?

普通的HTML5代码:

<select id="dropdowntipo">
    <option value="Exemplo1">Exemplo1</option>
    <option value="Exemplo2">Exemplo2</option>
    <option value="Exemplo3">Exemplo3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我试过这个:

@{
    var listItems = new List<ListItem> { 
        new ListItem { Text = "Exemplo1", Value = "Exemplo1" }, 
        new ListItem { Text = "Exemplo2", Value = "Exemplo2" }, 
        new ListItem { Text = "Exemplo3", Value = "Exemplo3" } 
    };
}

@Html.DropDownListFor(model => 
    model.tipo, 
    new SelectList(listItems), 
    "-- Select Status --"
)
Run Code Online (Sandbox Code Playgroud)

chr*_*dam 235

@{
   List<SelectListItem> listItems= new List<SelectListItem>();
   listItems.Add(new SelectListItem
        {
          Text = "Exemplo1",
          Value = "Exemplo1"
        });
   listItems.Add(new SelectListItem
        {
            Text = "Exemplo2",
            Value = "Exemplo2",
            Selected = true
        });
   listItems.Add(new SelectListItem
        {
            Text = "Exemplo3",
            Value = "Exemplo3"
        });
}

@Html.DropDownListFor(model => model.tipo, listItems, "-- Select Status --")
Run Code Online (Sandbox Code Playgroud)

  • 在最后一行 - 你怎么知道要打什么型号?"tipo"来自哪里? (4认同)
  • 如果您在控制器中定义了List,那么您需要在View中投射它,如下所示:@ Html.DropDownListFor(model => model.model_year,ViewBag.Years as List <SelectListItem>," - Select Year - ") (2认同)
  • @Andre这是模型属性的名称.他从问题中读到了这一点.该值绑定到该字段. (2认同)

小智 68

@{var listItems = new List<ListItem>
    {
          new ListItem { Text = "Exemplo1", Value="Exemplo1" },
          new ListItem { Text = "Exemplo2", Value="Exemplo2" },
          new ListItem { Text = "Exemplo3", Value="Exemplo3" }
    };
    }
        @Html.DropDownList("Exemplo",new SelectList(listItems,"Value","Text"))
Run Code Online (Sandbox Code Playgroud)


Gab*_*mas 39

你可以用这个:

@Html.DropDownListFor(x => x.Tipo, new List<SelectListItem>
    {
                        new SelectListItem() {Text = "Exemplo1", Value="Exemplo1"},
                        new SelectListItem() {Text = "Exemplo2", Value="Exemplo2"},
                        new SelectListItem() {Text = "Exemplo3", Value="Exemplo3"}
    })  
Run Code Online (Sandbox Code Playgroud)

  • 什么是“蒂波”? (2认同)
  • 谢谢,我还是不知道他从哪里得到的 (2认同)

小智 22

//视图模型

public class RegisterViewModel
{

    public RegisterViewModel()
    {
        ActionsList = new List<SelectListItem>();
    }

    public IEnumerable<SelectListItem> ActionsList { get; set; }

    public string StudentGrade { get; set; }

  }
Run Code Online (Sandbox Code Playgroud)

//枚举类:

public enum GradeTypes
{
    A,
    B,
    C,
    D,
    E,
    F,
    G,
    H
}
Run Code Online (Sandbox Code Playgroud)

//控制器动作

 public ActionResult Student()
    {
RegisterViewModel vm = new RegisterViewModel();
IEnumerable<GradeTypes> actionTypes = Enum.GetValues(typeof(GradeTypes))
                                             .Cast<GradeTypes>();
        vm.ActionsList = from action in actionTypes
                         select new SelectListItem
                         {
                             Text = action.ToString(),
                             Value = action.ToString()
                         };
        return View(vm);
    }
Run Code Online (Sandbox Code Playgroud)

//查看动作

 <div class="form-group">
                                <label class="col-lg-2 control-label" for="hobies">Student Grade:</label>
                                <div class="col-lg-10">
                                   @Html.DropDownListFor(model => model.StudentGrade, Model.ActionsList, new { @class = "form-control" })
                                </div>
Run Code Online (Sandbox Code Playgroud)


Aym*_*man 11

这是最简单的答案:

在您的视图中只添加:

@Html.DropDownListFor(model => model.tipo, new SelectList(new[]{"Exemplo1",
"Exemplo2", "Exemplo3"}))
Run Code Online (Sandbox Code Playgroud)

或者 在控制器中添加:

var exemploList= new SelectList(new[] { "Exemplo1:", "Exemplo2", "Exemplo3" });
        ViewBag.ExemploList = exemploList;
Run Code Online (Sandbox Code Playgroud)

而你的观点只是添加:

@Html.DropDownListFor(model => model.tipo, (SelectList)ViewBag.ExemploList )
Run Code Online (Sandbox Code Playgroud)

我和杰斯查德威克学到了这个


Bas*_*ANI 8

相信我,我已经尝试了很多选择 ,我在这里回答

但我一直在寻找最佳实践和迄今为止我所知道的前端和后端开发人员的最佳方式for loop(是的,我不是在开玩笑)

因为当前端为您提供带有虚拟数据的UI页面时,他还在特定选择选项上添加了类和一些内联样式,因此hard to deal使用它HtmlHelper

看看这个:

<select class="input-lg" style="">
    <option value="0" style="color:#ccc !important;">
        Please select the membership name to be searched for
    </option>
    <option value="1">11</option>
    <option value="2">22</option>
    <option value="3">33</option>
    <option value="4">44</option>
</select>
Run Code Online (Sandbox Code Playgroud)

这来自前端开发人员所以最好的解决方案是使用for循环

fristly createget your list在控制器动作从数据(...),并把它放在视图模型,ViewBag或什么

//This returns object that contain Items and TotalCount
ViewBag.MembershipList = await _membershipAppService.GetAllMemberships();
Run Code Online (Sandbox Code Playgroud)

其次在视图中执行这个简单的for循环来填充下拉列表

<select class="input-lg" name="PrerequisiteMembershipId" id="PrerequisiteMembershipId">
    <option value="" style="color:#ccc !important;">
        Please select the membership name to be searched for
    </option>
    @foreach (var item in ViewBag.MembershipList.Items)
    {
        <option value="@item.Id" @(Model.PrerequisiteMembershipId == item.Id ? "selected" : "")>
            @item.Name
        </option>
    }
</select>
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您不会破坏UI设计,而且它简单,易用,更易读

希望这可以帮助你,即使你没有使用剃须刀


Bry*_*end 7

使用数组比创建列表更有效.

@Html.DropDownListFor(x => x.Tipo, new SelectListItem[]{
                new SelectListItem() {Text = "Exemplo1", Value="Exemplo1"},
                new SelectListItem() {Text = "Exemplo2", Value="Exemplo2"},
                new SelectListItem() {Text = "Exemplo3", Value="Exemplo3"}})
Run Code Online (Sandbox Code Playgroud)


小智 6

@{
List<SelectListItem> listItems= new List<SelectListItem>();
listItems.Add(new SelectListItem
    {
      Text = "One",
      Value = "1"
    });
listItems.Add(new SelectListItem
    {
        Text = "Two",
        Value = "2",
    });
listItems.Add(new SelectListItem
    {
        Text = "Three",
        Value = "3"
    });
listItems.Add(new SelectListItem
{
   Text = "Four",
   Value = "4"
});
listItems.Add(new SelectListItem
{
   Text = "Five",
   Value = "5"
});
}
@Html.DropDownList("DDlDemo",new SelectList(listItems,"Value","Text"))
Run Code Online (Sandbox Code Playgroud)

请参阅: - 在MVC 4 razor示例中创建下拉列表