1

我的视图上有一个字段(一个复选框),它具有模型中的 id 值。我需要将用户在表单上检查的那些 id 的列表返回给控制器操作。

我尝试过的每件事都不起作用。我将视图编码为返回到控制器,但我还没有弄清楚如何返回所需的值。

这是视图中复选框的片段...

<td @trFormat >
    <input id="ExportCheck" type="checkbox" value = "@item.PernrId" onclick="saveid(value);"/>
</td>

当前,onclick 事件正在在应该存储 id 值的视图上触发 javascript...

<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。

4

1 回答 1

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.
}
于 2012-09-14T18:45:19.603 回答