我有 MVC2 视图,其中有一个网格和图像按钮。单击图像按钮时,会将网格的 currentPage、filter 和 orderBy 字段的数据传递给另一个控制器。代码是,
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MaintenanceEditableViewModel>" %>
"Image button"
<a href="<%: Url.Action("ExportToExcel", "ExportExcelButton", new { resourceId = ViewData["resourceId"], pagenum = ViewData["page"], orderBy = ViewData["orderBy"], filter = ViewData["filter"] }) %>">
<img src='<%: Url.Content("~/Content/Images/ExportExcelButton.gif") %>' /></a>
"Grid"
<%= Html.Telerik().Grid<MaintenanceAthletesResultsViewModel>()
.Name("Grid")
.TableHtmlAttributes(new { style = "font-size:8pt;" })
.HtmlAttributes(new { style = "height:335px" })
.DataKeys(k => k.Add(k2 => k2.ResultID))
.DataBinding(dataBinding => dataBinding.Ajax()
.Select("AthletesResultsAjax", "Maintenance")
...
"Action to initialize the grid in Maintenance controller"
public ActionResult AthletesResults(string id, bool editable)
{
ViewData["resourceId"] = id;
this._resourceBL.PopulateMaintenanceResourcesViewData(id, this.SelectedSport());
MaintenanceEditableViewModel model = new MaintenanceEditableViewModel { Editable = editable };
return View(model);
}
[GridAction]
public ActionResult AthletesResultsAjax(string id, int page, string orderBy, string filter)
{
List<MaintenanceAthletesResultsViewModel> model = null;
if (!string.IsNullOrEmpty(id))
{
ViewData["page"] = page;
ViewData["orderBy"] = orderBy;
ViewData["filter"] = filter;
model = this._resourceBL.GetMaintenanceAthletesResultsViewModel(int.Parse(id));
}
return View(new GridModel(model));
}
public ActionResult ExportToExcel(string resourceId, string pagenum, string orderBy, string filter)
奇怪的是,只有 ViewData["resourceId"] (在视图初始化时设置)能够被传递。3个参数,ViewData["page"], ViewData["orderBy"], ViewData["filter"](在grid ajax action中设置)不能传递。所有 3 在 ExportToExcel 中都是空的,所以我认为它们没有正确存储在 ViewData 中(我不确定按下图像按钮时如何检查 ViewData)。我很困惑,需要帮助。
谢谢