2017-08-15 78 views
0

我有一个具有多个视图的控制器。每个视图都会返回一个名为actionType的参数,其中每个视图返回不同的枚举类型(例如ElectricEnum,PaperlessEnum,DigitalEnum)。在我的控制器操作中,我将它设置为接收一个名为actionType的Enum类型。默认设置为空。但是,我无法获得填充数据的参数,无论如何它总是返回null。ASP.NET从视图返回不同的枚举类型到相同的控制器动作

下面是从一个视图和方法头代码的示例...

检视:

@using (Html.BeginForm("DownloadCSVReport", "Public", FormMethod.Post, new { target = "_blank" })) 
     { 
      @Html.Hidden("fromDate", Model.StatsByDate.Parameters.FromDate) 
      @Html.Hidden("toDate", Model.StatsByDate.Parameters.ToDate) 
      @Html.Hidden("serviceType", ServiceTypeEnum.Paperless) 
      @Html.Hidden("actionType", Model.StatsByDate.Parameters.ActionType) 

      <input type="submit" class="btn btn-primary" name="download" value="Download" formmethod="post" /> 
     } 

控制器:

public ActionResult DownloadCSVReport(DateTime fromDate, DateTime toDate, ServiceTypeEnum serviceType, Enum actionType = null) 
    { 
     string returnValue = _dashboardClient.Call(svc => svc.GetCommaSeparatedList(fromDate, toDate, serviceType, actionType)); 

     Response.ContentType = "application/ms-excel"; 
     Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.csv", "ReportDownload")); 
     Response.AppendCookie(new HttpCookie("DownloadToken", System.DateTime.Now.ToShortTimeString())); // For loader icon 

     return Content(returnValue, "application/vnd.ms-excel"); 
    } 

在此视图中,操作类型的值是ElectronicEnum,但在其他视图中称为DownloadCSVReport操作,它们是一种不同类型的枚举...

是否可以通过这种方式解决这个问题,我可以将这些不同类型的枚举传递给一个目的地并利用它的值吗?

回答

0

模型绑定只是寻找模型属性。因此,哪些不属于你的模型的部分将会丢失。将ActionType添加到您的模型中,您将在控制器中将其作为模型的属性。

相关问题