如何为每个项目重复我的方法循环?

时间:2012-09-28 11:43:16

标签: asp.net-mvc-3

有我的问题。在控制器中,我有这种方法,当我点击一个按钮时,我将视图导出到文件中。

public ActionResult Export(string searchString, int searchOrder = 0)
{
    var user = from m in db.Orders select m;

    if (!String.IsNullOrEmpty(searchString))
    {
        user = user.Where(s => s.ClientID.Contains(searchString));
    }

    Response.AddHeader("Content-Type", "application/vnd.ms-excel");            
    return this.View(user);
}

我的索引视图:

@model IEnumerable<MyApp.Models.Order>

@{
    ViewBag.Title = "Index";
}

<h2>Orders Historic</h2>    

<div id="orderDiv">
@using (Html.BeginForm("Export", "Historic", FormMethod.Get))
{
            <p>
        Generate Order with ClientID :&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
         @Html.TextBox("searchString")

        <input type="submit" value="GENEREMOI" />
        </p>
}
</div>

我的导出视图:

@model IEnumerable<KrysGroup.Models.Order>

    <table cellpadding="3" cellspacing="3">
        <tr>       
            <td width="12%" align="center">
                Client Name/ID
            </td>
            <td width="15%" align="center">
                N° Order
            </td>

            OTHER TD....

        </tr>   

@foreach (var item in Model)
{
      TimeSpan result = DateTime.Now - item.OrderDate;

      if (result.Days < 31)
      {            
            <tr border="1" bgcolor="@Odd">
               <td> @Html.DisplayFor(modelItem => item.Username) </td>    
               <td> @Html.DisplayFor(modelItem => item.OrderId) </td>  
                <td>
                    <ul style="list-style-type:none; padding:0; margin:0">
                        @if (item.OrderDetails != null)
                        {
                            foreach (var o in item.OrderDetails)
                            {
                                if (o.Pack == null)
                                { 
                                    <li>  @Html.DisplayFor(modelItem => o.Product.Name)  </li>
                                }
                                else
                                {  
                                    <li> <text>Pack</text>  @Html.DisplayFor(modelItem => o.Pack.Name)  </li>
                                }
                            }
                        }  
                    </ul>             
                </td>

                OTHER TD...    
 </table>

因此,在我看来,我在文本框中通知了ClientID,当我单击该按钮时,它会在文件中导出具有此ClientID的表格中的所有字段。

我想自动执行此操作,也就是说我想编写一个方法或其他东西,当我点击按钮时,它会为我在表中遇到的每个clientId执行此export()方法。

我希望我很清楚,对不起我的英语.. 感谢您的回答,链接,提示。

1 个答案:

答案 0 :(得分:0)

您可以将部分视图写入到单击按钮时加载的Id列表中。

因此,在控制器中,您可以使用方法转换所需内容,并返回键入的视图以转换模型。

在主视图中,您有一个div,在原始按钮的单击事件后将填充部分视图。

@Ajax.ActionLink("Name", "NameOfTheAction", "NameOfTheController",
                                   new { id = itemId },
                                   new AjaxOptions { HttpMethod = "Get", UpdateTargetId = "divInMainView", OnSuccess = "Do Something (js)" },
                                    new { html-props })

如何填充由您自己决定