我的视图(复选框)上有一个字段,其中包含模型中id的值。我需要将用户在表单上检查的那些ID列表返回到控制器操作。
我尝试的每件事都不起作用。我将视图编码为返回控制器,但我还没弄清楚如何返回所需的值。
这是视图中复选框的摘录......
<td @trFormat >
<input id="ExportCheck" type="checkbox" value = "@item.PernrId" onclick="saveid(value);"/>
</td>
目前onclick事件正在视图上触发javascript,应存储id值...
<script type="text/javascript">
var keys = null;
function saveid(id) {
keys += id;
}
</script>
我一直在尝试使用动作调用来回到控制器。目前没有回送路由对象,因为我无法弄清楚如何加载它......
<input type="submit" value="Export to Excel" onclick="location.href='@Url.Action("ExportExcel","CastIndex")'" />
我知道我可能在这段代码上做了很多错误。我刚刚开始研究我的第一个MVC应用程序。任何帮助,将不胜感激。 最终结果是我需要在控制器中使用id来检索所选的id并将它们发送到excel的导出。
答案 0 :(得分:0)
您可以使用类似于:
的强类型模型public class Item
{
public int Id { get; set; }
public string Name { get; set;}
//Other properties...
public bool Export {get; set;} //for tracking checked/unchecked
}
在控制器的GET操作中,构建一个List并将其传递给强类型视图。
[HttpGet]
public ActionResult MyAction()
{
var model = new List<Item>();
//ToDo: Get your items and add them to the list... Possibly with model.add(item)
return View(model);
}
在视图中,您可以使用HTML帮助程序“CheckBoxFor”为列表中的每个项目添加复选框项。
@using (Html.BeginForm())
{
//other form elements here
@Html.CheckBoxFor(model=>model.Export) //this add the check boxes for each item in the model
<input type="submit" value="Submit" />
}
您的控制器的POST操作可以使用List并查找具有Export == true:
的那些[HttpPost]
public ActionResult MyAction (List<Item> items)
{
foreach(Item i in Items)
{
if(i.Export)
{
//do your thing...
}
}
//Return or redirect - possibly to success action screen, or Index action.
}