Asp.net mvc 如何在MVC4 Razor中使用CheckBoxList和DropdownList
我必须使用@Html.CheckBoxListFor或@Html.DropdownListFor。当我使用List进行模型绑定时,我对如何在视图中使用这些helper类感到困惑 将列表绑定到CheckBoxList和DropdownList中最正确、最简单的方法是什么 在型号中:Asp.net mvc 如何在MVC4 Razor中使用CheckBoxList和DropdownList,asp.net-mvc,asp.net-mvc-4,razor,html-helper,checkboxlist,Asp.net Mvc,Asp.net Mvc 4,Razor,Html Helper,Checkboxlist,我必须使用@Html.CheckBoxListFor或@Html.DropdownListFor。当我使用List进行模型绑定时,我对如何在视图中使用这些helper类感到困惑 将列表绑定到CheckBoxList和DropdownList中最正确、最简单的方法是什么 在型号中: public class SampleViewModel { public IEnumerable<Responsible> AvailableResponsibles { get;
public class SampleViewModel
{
public IEnumerable<Responsible> AvailableResponsibles { get; set; }
public IEnumerable<Responsible> SelectedResponsibles { get; set; }
public PostedResponsibles PostedResponsibles { get; set; }
Responsible objResponsible = new Responsible();
public SampleViewModel GetResponsiblesInitialModel()
{
//setup properties
var model = new SampleViewModel();
var selectedResponsibles = new List<Responsible>();
//setup a view model
model.AvailableResponsibles = objResponsible.GetAll().ToList();
model.SelectedResponsibles = selectedResponsibles;
return model;
}
}
public class Responsible
{
//Integer value of a checkbox
public int Id { get; set; }
//String name of a checkbox
public string Name { get; set; }
//Boolean value to select a checkbox
//on the list
public bool IsSelected { get; set; }
//Object of html tags to be applied
//to checkbox, e.g.:'new{tagName = "tagValue"}'
public object Tags { get; set; }
public IEnumerable<Responsible> GetAll()
{
return new List<Responsible> {
new Responsible {Name = "Apple", Id = 1 },
new Responsible {Name = "Banana", Id = 2},
new Responsible {Name = "Cherry", Id = 3},
new Responsible {Name = "Pineapple", Id = 4},
new Responsible {Name = "Grape", Id = 5},
new Responsible {Name = "Guava", Id = 6},
new Responsible {Name = "Mango", Id = 7}
};
}
}
public class PostedResponsibles
{
//this array will be used to POST values from the form to the controller
public string[] ResponsibleIds { get; set; }
}
<tr>
<td>
@Html.LabelFor(model=>model.Responsible)
</td>
<td>
@Html.CheckBoxListFor(model => model.PostedResponsibles.ResponsibleIds,
model => model.AvailableResponsibles,
Responsible => Responsible.Id,
Responsible => Responsible.Name,
model => model.SelectedResponsibles)
</td>
</tr>
公共类SampleViewModel
{
公共IEnumerable可用责任{get;set;}
公共IEnumerable SelectedResponsibles{get;set;}
公共PostedResponsibles PostedResponsibles{get;set;}
Responsible objResponsible=新Responsible();
public SampleViewModel GetResponsiblesInitialModel()
{
//设置属性
var模型=新的SampleViewModel();
var selectedResponsibles=new List();
//设置视图模型
model.AvailableResponsibles=objResponsible.GetAll().ToList();
model.SelectedResponsibles=SelectedResponsibles;
收益模型;
}
}
公共课负责人
{
//复选框的整数值
公共int Id{get;set;}
//复选框的字符串名称
公共字符串名称{get;set;}
//选择复选框的布尔值
//在名单上
公共布尔值被选为{get;set;}
//要应用的html标记的对象
//选中复选框,例如:“新建{tagName=“tagValue”}”
公共对象标记{get;set;}
公共IEnumerable GetAll()
{
返回新列表{
新负责人{Name=“Apple”,Id=1},
新的负责人{Name=“Banana”,Id=2},
新的负责人{Name=“Cherry”,Id=3},
新的负责人{Name=“菠萝”,Id=4},
新负责人{Name=“Grape”,Id=5},
新负责人{Name=“Guava”,Id=6},
新负责人{Name=“Mango”,Id=7}
};
}
}
公共类PostedResponsibles
{
//此数组将用于将值从窗体发布到控制器
公共字符串[]ResponsibleIds{get;set;}
}
视图为:
public class SampleViewModel
{
public IEnumerable<Responsible> AvailableResponsibles { get; set; }
public IEnumerable<Responsible> SelectedResponsibles { get; set; }
public PostedResponsibles PostedResponsibles { get; set; }
Responsible objResponsible = new Responsible();
public SampleViewModel GetResponsiblesInitialModel()
{
//setup properties
var model = new SampleViewModel();
var selectedResponsibles = new List<Responsible>();
//setup a view model
model.AvailableResponsibles = objResponsible.GetAll().ToList();
model.SelectedResponsibles = selectedResponsibles;
return model;
}
}
public class Responsible
{
//Integer value of a checkbox
public int Id { get; set; }
//String name of a checkbox
public string Name { get; set; }
//Boolean value to select a checkbox
//on the list
public bool IsSelected { get; set; }
//Object of html tags to be applied
//to checkbox, e.g.:'new{tagName = "tagValue"}'
public object Tags { get; set; }
public IEnumerable<Responsible> GetAll()
{
return new List<Responsible> {
new Responsible {Name = "Apple", Id = 1 },
new Responsible {Name = "Banana", Id = 2},
new Responsible {Name = "Cherry", Id = 3},
new Responsible {Name = "Pineapple", Id = 4},
new Responsible {Name = "Grape", Id = 5},
new Responsible {Name = "Guava", Id = 6},
new Responsible {Name = "Mango", Id = 7}
};
}
}
public class PostedResponsibles
{
//this array will be used to POST values from the form to the controller
public string[] ResponsibleIds { get; set; }
}
<tr>
<td>
@Html.LabelFor(model=>model.Responsible)
</td>
<td>
@Html.CheckBoxListFor(model => model.PostedResponsibles.ResponsibleIds,
model => model.AvailableResponsibles,
Responsible => Responsible.Id,
Responsible => Responsible.Name,
model => model.SelectedResponsibles)
</td>
</tr>
@LabelFor(model=>model.Responsible)
@Html.CheckBoxListFor(model=>model.PostedResponsibles.ResponsibleIds,
model=>model.AvailableResponsibles,
Responsible=>Responsible.Id,
Responsible=>Responsible.Name,
模型=>model.SelectedResponsibles)
目前我正在使用Nuget Packege,但它有点混乱,很难使用。建议我使用任何其他方法来实现此目的。这取决于您的UI要求。如果你需要一个下拉列表,那么使用它 CheckBoxList不是现成的帮助程序,它是一个自定义帮助程序 您可以从这里找到帮助器(复选框列表)的更多详细信息 关于下拉列表,请参阅。它可以以多种方式重载 这是可用的
安装程序包MvcCheckBoxList
namespace CheckBoxListForApp.Models
{
公共级水果
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共布尔值被选为{get;set;}
公共对象标记{get;set;}
}
}
使用System.Collections.Generic;
命名空间CheckBoxListForApp.Models
{
公共类模型
{
public IEnumerable AvailableFruits{get;set;}
公共IEnumerable SelectedFruits{get;set;}
公共PostedFruits PostedFruits{get;set;}
}
}
namespace CheckBoxListForApp.Models
{
///
///用于帮助器类,使回发选定值更容易
///
公营邮品
{
//此数组将用于将值从窗体发布到控制器
公共字符串[]水果ID{get;set;}
}
}
使用System.Collections.Generic;
利用制度全球化;
使用System.Linq;
使用System.Web.Mvc;
使用CheckBoxListForApp.Models;
命名空间CheckBoxListForApp.Controllers
{
公共类HomeController:控制器
{
[HttpGet]
公共行动结果索引()
{
返回视图(GetFruitsInitialModel());
}
[HttpPost]
公共行动结果指数(PostedFruits PostedFruits)
{
返回视图(GetFruitsModel(postedFruits));
}
私有水果视图模型GetFruitsModel(PostedFruits PostedFruits)
{
var模型=新的水果视图模型();
var selectedFruits=新列表();
var postedfructids=新字符串[0];
如果(postedFriences==null)postedFriences=new postedFriences();
//如果存在已发布ID的视图模型数组
//并且不为空,请保存所选ID
if(postedFruits.FruitIds!=null&&postedFruits.FruitIds.Any())
{
postedFruitIds=PostedFruitis.FruitIds;
}
//如果保存了任何选定的ID,请创建水果列表
if(postedFruitIds.Any())
{
selectedFruits=FruitRepository.GetAll()
.Where(x=>postedfructId.Any(s=>x.Id.ToString().Equals(s)))
.ToList();
}
model.AvailableFruits=FruitRepository.GetAll().ToList();
model.SelectedFruits=SelectedFruits;
M