将不在模型中的数据返回到mvc控制器

时间:2012-09-12 12:15:26

标签: javascript asp.net-mvc

我的视图(复选框)上有一个字段,其中包含模型中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的导出。

1 个答案:

答案 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.
}