use*_*616 4 checkbox asp.net-mvc asp.net-mvc-3
我是MVC3的新手,我无法弄清楚如何在MVC中使用复选框.在我看来,我有一堆文字
text1
text2
text3
text4
text5
submitbutton
Run Code Online (Sandbox Code Playgroud)
此文本与任何模型的纯文本无关.我想为每个项目添加一个复选框,并将其链接到控制器,以便当用户选择一些复选框值并单击提交按钮时,我的控制器会选择已选择的项目.我尝试使用@html.checkbox("text"+ index)并尝试使用控制器
[HttpPost]
public ActionResult controller(List<string> list)
{
}
Run Code Online (Sandbox Code Playgroud)
但是,这并没有获取所选项目的列表.你能告诉我我做错了什么或其他方式吗?
在这种情况下我要做的是使这些项目成为我的ViewModel的属性.
public class MyViewModel
{
public bool text1 { set;get}
public bool text2 { set;get;}
public bool SomeMeaningFullName { set;get;}
// Other properties for the view
}
Run Code Online (Sandbox Code Playgroud)
在我的Get Action方法中,我将把这个ViewModel返回给我的View
public ActionResult Edit()
{
MyViewModel objVM=new MyViewModel();
return View(objVM);
}
Run Code Online (Sandbox Code Playgroud)
在我看来
@model MyViewModel
@using (Html.BeginForm("Edit","yourcontroller"))
{
@Html.LabelFor(Model.text1)
@Html.CheckBoxFor(Model.text1)
@Html.LabelFor(Model.text2)
@Html.CheckBoxFor(Model.text2)
<input type="submit" value="Save" />
}
Run Code Online (Sandbox Code Playgroud)
现在,此属性值将在您的post action方法中可用
[HttpPost]
public ActionResult Edit(MyViewModel objVM)
{
//Here you can access the properties of objVM and do whatever
}
Run Code Online (Sandbox Code Playgroud)
使用所有值创建ViewModel.填充ViewModel并将其发送到视图.检查某些内容后,您就会知道帖子上的内容.
public class MyModelViewModel
{
public List<CheckBoxes> CheckBoxList {get; set;}
// etc
}
public class CheckBoxes
{
public string Text {get; set;}
public bool Checked {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
[HttpPost]
public ActionResult controller(MyModelViewModel model)
{
foreach(var item in model.CheckBoxList)
{
if(item.Checked)
{
// do something with item.Text
}
}
}
Run Code Online (Sandbox Code Playgroud)
基本上ViewModels是你的朋友.您希望每个View都有一个单独的ViewModel,它是在Controller和View之间来回传递的.然后,您可以在控制器中或(最好)在服务层中进行数据解析.
附加参考:
ViewModel应该在每个使用MVC的View中使用吗?
| 归档时间: |
|
| 查看次数: |
16863 次 |
| 最近记录: |