您当前的位置: 首页 >  .net

寒冰屋

暂无认证

  • 0浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

以编程方式在ASP.NET MVC中使用多个HTML Select控件

寒冰屋 发布时间:2020-01-30 11:52:24 ,浏览量:0

目录

介绍

使用代码

使用JQuery

使用Razor和C#

兴趣点

介绍

很多时候,我们使用JavaScript或JQuery代码来操纵HTML控件,却不知道ASP.NET MVC与Razor和C#的结合有多强大,或者不知道两种方式都能做到这一点。

下面是这两种方式,一种经典的JQuery方式,也可以在PHP,JSP等中使用。

使用代码

这是一个常见的多个HTML选择控件:

@* Home\Index.cshtml *@


  Meat
  Cereals
  Seafood
  Soda
  Coffee

我们需要以编程方式选择许多选项,例如:Meat(1),Cereals(2)和Soda(4)。

使用JQuery

使用JQuery,我们需要在同一HTML页面或JavaScript文件中创建JavaScript标记,并在页面中添加引用,在本文中,它已用于第二种方式:

// Index.js

$(document).ready(function () {
    selectItems();
});
function selectItems() {
    var values = "1,2,4";
    $.each(values.split(","), function (i, e) {
        $("#selectCategories option[value='" + e + "']").prop("selected", true);
    });
}

在这一行中,我们需要选择以下选项:

var values = "1,2,4";
使用Razor和C#

这是我们要在HTML选择控件中加载的Model类:

// Category.cs

public class Category
{
   public int Id { get; set; }
   public string Name { get; set; }
}

在Controller这使得填充select控制和选择:

// HomeController.cs

public ActionResult Index()
{
     List categories = new List();
     Category category = new Category();
     category.Id = 1;
     category.Name = "Meat";
     categories.Add(category);
     category = new Category();
     category.Id = 2;
     category.Name = "Cereals";
     categories.Add(category);
     category = new Category();
     category.Id = 3;
     category.Name = "Seafood";
     categories.Add(category);
     category = new Category();
     category.Id = 4;
     category.Name = "Soda";
     categories.Add(category);
     category = new Category();
     category.Id = 5;
     category.Name = "Coffee";
     categories.Add(category);
     ViewBag.Categories = new MultiSelectList(categories, "Id", "Name", new[] { 1, 2, 4 });
     return View();
}

该MultiSelectList对象允许选中并将List所有选项传递给Home\Index.cshtml:

ViewBag.Categories = new MultiSelectList(categories, "Id", "Name", new[] { 1, 2, 4 });

在Home\Index.cshtml中,我们可以使用空的HTML select控件,并在Razor中使用for或while循环语句用ViewBag.Categories填充:

或使用Razor HTML Helpers:

Multiselect with Razor (DropDownList)
@Html.DropDownList("Id", (MultiSelectList)ViewBag.Categories, new { multiple = "multiple" })
Multiselect with Razor (ListBox)
@Html.ListBox("Id", (MultiSelectList)ViewBag.Categories)

兴趣点

就个人而言,我更喜欢Razor HTML Helper,可以解决许多缺少功能且减少了代码行的HTML控件。

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.0588s