asp.net-mvc – 如何将复选框绑定到视图模型的List属性?
发布时间:2020-09-21 14:11:44 所属栏目:asp.Net 来源:互联网
导读:我一直在阅读视图模型和复选框上的各种帖子,但我的大脑开始锁定,我需要向正确的方向推进一点. 这是我的简化视图模型.我有复选框需要用它们的值填充列表.我不认为这可以自动发生.我不确定如何正确地弥合字符串值数组和List之间的差距.建议? public int AlertI
|
我一直在阅读视图模型和复选框上的各种帖子,但我的大脑开始锁定,我需要向正确的方向推进一点. 这是我的简化视图模型.我有复选框需要用它们的值填充列表.我不认为这可以自动发生.我不确定如何正确地弥合字符串值数组和List之间的差距.建议? public int AlertId { get; set; }
public List<int> UserChannelIds { get; set; }
public List<int> SharedChannelIds { get; set; }
public List<int> SelectedDays { get; set; }
解决方法让您的View模型像这样表示CheckBox项public class ChannelViewModel
{
public string Name { set;get;}
public int Id { set;get;}
public bool IsSelected { set;get;}
}
现在您的主ViewModel将是这样的 public class AlertViewModel
{
public int AlertId { get; set; }
public List<ChannelViewModel> UserChannelIds { get; set; }
//Other Properties also her
public AlertViewModel()
{
UserChannelIds=new List<ChannelViewModel>();
}
}
现在,在您的GET操作中,您将填充ViewModel的值并将其发送到视图. public ActionResult AddAlert()
{
var vm = new ChannelViewModel();
//The below code is hardcoded for demo. you mat replace with DB data.
vm.UserChannelIds.Add(new ChannelViewModel{ Name = "Test1",Id=1});
vm.UserChannelIds.Add(new ChannelViewModel{ Name = "Test2",Id=2 });
return View(vm);
}
现在让我们创建一个EditorTemplate.转到Views / YourControllerName和Crete一个名为“EditorTemplates”的文件夹,并在那里创建一个与属性名称相同的新视图(ChannelViewModel.cshtml) 在新的编辑器模板中添加此代码. @model ChannelViewModel <p> <b>@Model.Name</b> : @Html.CheckBoxFor(x => x.IsSelected) <br /> @Html.HiddenFor(x=>x.Id) </p> 现在,在主视图中,使用EditorFor Html Helper方法调用编辑器模板. @model AlertViewModel
<h2>AddTag</h2>
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(m => m.AlertId)
@Html.TextBoxFor(m => m.AlertId)
</div>
<div>
@Html.EditorFor(m=>m.UserChannelIds)
</div>
<input type="submit" value="Submit" />
}
现在,当您发布表单时,您的模型将具有UserChannelIds集合,其中选定的复选框将具有IsSelected属性的True值. [HttpPost]
public ActionResult AddAlert(AlertViewModel model)
{
if(ModelState.IsValid)
{
//Check for model.UserChannelIds collection and Each items
// IsSelected property value.
//Save and Redirect(PRG pattern)
}
return View(model);
} (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在IIS上部署ASP.NET Core项目的图文方法
- ASP.NET:WebResource.axd调用404错误:如何知道哪个程序集
- asp.net-core – 在Visual Studio CTP2中的ASP.VNext项目中
- asp.net-mvc – 用于选择的KendoUI网格Ajax绑定参数
- asp.net文件上传功能(单文件,多文件,自定义生成缩略图,水印
- asp.net – 我怎么知道我的应用程序中是否需要“WCF HTTP激
- asp.net – 部分视图呈现按钮点击
- asp.net core 实现一个简单的仓储的方法
- 有标签的ASP.NET WebControl吗?
- asp.net – 如何删除日历的最后一周
推荐文章
站长推荐
- asp.net-mvc-3 – 在MVC Razor View中使用If语句
- ASP.NET Page_Init被解雇了两次!
- asp.net-core – 在Visual Studio CTP2中的ASP.V
- asp.net-mvc – 如何检查是否为浏览器启用了cook
- ASP.NET虚拟路径映射到另一个不允许的应用程序
- asp.net – 干净的方式来防止输入按钮提交表单
- VS 2015 CTP 6 Nuget Package Source
- asp.net – Html.Partial()跳过控制器动作
- asp.net – 多个域的集成Windows身份验证
- asp.net-mvc – 路由是在我的区域中找到控制器,但
热点阅读
