2013-02-01 160 views
1

我将视图中的日期传递给控制器​​,然后从控制器中查看这两个日期之间的记录数。随着更多的一个记录将获取,所以我使用IEnumerable,所以我可以显示记录列表。但是在使用IEnumerable时,它无法从视图中传递选定日期并传递给控制器​​。任何人都可以解释为什么?将数据从视图传递到控制器和控制器以查看

这是我的代码:

查看:Index.aspx的

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<ApricaCRMEvent.Models.CRM.DatabaseEntities.CRM_Doctor_Request>>" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Index 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
<link rel="stylesheet" href="../../jquery-ui-1.8.17.custom/development-bundle/themes/base/jquery.ui.all.css"> 

<script src="../../jquery-ui-1.8.17.custom/development-bundle/jquery-1.7.1.js"></script> 

<script src="../../jquery-ui-1.8.17.custom/development-bundle/ui/jquery.ui.core.js"></script> 

<script src="../../jquery-ui-1.8.17.custom/development-bundle/ui/jquery.ui.widget.js"></script> 

<script src="../../jquery-ui-1.8.17.custom/development-bundle/ui/jquery.ui.datepicker.js"></script> 

<link rel="stylesheet" href="../../jquery-ui-1.8.17.custom/development-bundle/demos/demos.css"> 

<script> 


    function PassValue() { 
     var todate = document.getElementById("Date_Modified"); 
     var fromdate = document.getElementById("Date_Created"); 
     todate.value = document.getElementById("txtToDate").value; 
     fromdate.value = document.getElementById("txtFromDate").value; 
    } 

    $(function() { 

     $("#txtToDate").datepicker({ 
      altField: "#alternate", 
      altFormat: "DD, d MM, yy" 
     }); 


     $("#txtFromDate").datepicker({ 
      altField: "#alternate", 
      altFormat: "DD, d MM, yy" 
     }); 
    }); 

</script> 

<div> 
<h2>Search by Date</h2> 
    <% using (Html.BeginForm()) 
     { %> 
     <%: Html.ValidationSummary(true, "Profile Updation was unsuccessful. Please correct the errors and try again.") %> 

     <%= Html.HiddenFor(model=>model.Date_Created) %> 
     <%= Html.HiddenFor(model=>model.Date_Modified) %> 
     <table> 
      <tr> 
      <td>Enter From Date</td> 
      <td><input type="text" id="txtFromDate"></td> 
      <td>Enter To Date</td> 
      <td><input type="text" id="txtToDate"></td> 

      <td><input type="submit" name="btnSearchDate" value="Search" onclick="PassValue()" /></td> 
      </tr> 
     </table> 
    <% } %> 
</div> 
<div id="showtable"> 
<table> 
    <tr> 
     <th> 
      Request_For_Id 
     </th> 
     <th> 
      Territory 
     </th> 
     <th> 
      Estimated_Amount 
     </th> 
     <th> 
      Actual_Amount 
     </th> 
     <th> 
      Date_Created 
     </th> 
     <th> 
      Compute_CRM_State 
     </th> 
     <th> 
      Compute_Event_Type 
     </th> 
    </tr> 
    <% foreach (var item in Model) 
     { %> 
    <tr> 
     <td> 
      <%: Html.DisplayFor(modelItem => item.Request_For_Id)%> 
     </td> 
     <td> 
      <%: Html.DisplayFor(modelItem => item.Territory)%> 
     </td> 

     <td> 
      <%: Html.DisplayFor(modelItem => item.Estimated_Amount)%> 
     </td> 
     <td> 
      <%: Html.DisplayFor(modelItem => item.Actual_Amount)%> 
     </td> 
     <td> 
      <%: Html.DisplayFor(modelItem => item.Date_Created)%> 
     </td> 
     <td> 
      <%: Html.DisplayFor(modelItem => item.Compute_CRM_State)%> 
     </td> 
     <td> 
      <%: Html.DisplayFor(modelItem => item.Compute_Event_Type)%> 
     </td> 
    </tr> 
    <%} %> 
</table> 
</div> 
</asp:Content> 

控制器

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using ApricaCRMEvent.Models.CRM.DatabaseEntities; 
using ApricaCRMEvent.Models.CRM.DataLayer; 

namespace ApricaCRMEvent.Controllers.CRM 
{ 
    public class SearchDateWiseController : Controller 
    { 
     // 
     // GET: /SearchDateWise/ 
     CRM_Doctor_Request dateObj = new CRM_Doctor_Request(); 

     public ActionResult Index() 
     { 
      return View(); 
     } 

     [HttpPost] 
     public ActionResult Index(CRM_Doctor_Request model) 
     { 

    return View(SearchMDLNoDL.getDateWiseDetails(model.Date_Created,model.Date_Modified).ToList()); 
     } 

    } 
} 

虽然使用了IEnumerable显示编译错误

Line 49:   <%: Html.ValidationSummary(true, "Profile Updation was unsuccessful. Please correct the errors and try again.") %> 
Line 50: 
Line 51:   **<%= Html.HiddenFor(model=>model.Date_Created) %> 
Line 52:   <%= Html.HiddenFor(model=>model.Date_Modified) %>** 
Line 53:   <table> 

编译器错误消息:CS1061:'System.Collections.Generic.IEnumerable'不包含'Date_Created'的定义,也没有接受类型'System.Collections.Generic.IEnumerable'的第一个参数的扩展方法'Date_Created'可以找到(您是否缺少使用指令或程序集引用?)

+0

您是否将可枚举数据发布到控制器? –

+0

@Karthik不,只有我只是通过两个日期。 –

+0

问题是当你从控制器获取值来查看? –

回答

-1

您在本例中的视图模型是IEnumurable。它只包含在枚举器上定义的方法。你有两个选择。

选项之一:定义一个视图模型,如以下

public class MyViewModel { 
    public CRM_Doctor_Request ReportRequests { get; set;} 
    public DateTime Date_Created { get; set;} 
    public DateTime Date_Modified { get; set;} 
} 

现在你可以使用这个视图模型将数据传递到视图。

第二个选项:使用ViewBag将日期传递给视图。在你的控制器

ViewBag.Date_Created = dateCreated; 
ViewBag.Date_Modified = dateModified; 

现在,这些值现在可以从查看

个人而言,我会去选择一个访问,由于其清洁

+0

虽然他正在枚举集合,但这不适用 – glosrob

1

尝试这样的:

<% foreach (var date in Model) { %> 
     <%= Html.HiddenFor(date=>date.Date_Created) %> 
     <%= Html.HiddenFor(date=>date.Date_Modified) %> 
    <% } %> 

希望能帮助到你。

相关问题