2014-01-22 2 views
0

Я новичок, использующий MVC 3 и linq для SQL в asp.net, я пытаюсь экспортировать данные webgrid на лист excel, но это throws error:«System.Web.Helpers.WebGrid» не содержит определения для «RenderControl»

'System.Web.Helpers.WebGrid' does not contain a definition for 'RenderControl' and no extension method 'RenderControl' accepting a first argument of type 'System.Web.Helpers.WebGrid' could be found (are you missing a using directive or an assembly reference?) 

Я размещаю код, чтобы вы, ребята, могли мне помочь. Код:

Контроллер:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Helpers; 
using EmployeeAttendance_app.Models; 
using System.IO; 
using System.Web.UI.WebControls; 
using System.Web.Mvc.Html; 


namespace EmployeeAttendance_app.Controllers 
{ 
    public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      ViewBag.Message = "Precise Technology Consultants"; 
      var DataContext = new EmployeeAtdDataContext(); 
      //var EmployeeAtd = DataContext.GetAttendance_Sp(); 
      IEnumerable<GetAtdRecord_SpResult> EmployeeAtd = DataContext.GetAtdRecord_Sp(null).ToList(); 
      return View(EmployeeAtd); 

     } 

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

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

     public ActionResult ToExcel() 
     { 
      var DataContext = new EmployeeAtdDataContext(); 

      IEnumerable<GetAtdRecord_SpResult> EmployeeAtd = DataContext.GetAtdRecord_Sp(null).ToList(); 

      var grid = new WebGrid(EmployeeAtd, defaultSort: "EmplID"); 
      Response.ClearContent(); 
      Response.Buffer = true; 
      Response.AddHeader("content-disposition", "attachment; filename=AttendanceSheet.xls"); 
      Response.ContentType = "application/ms-excel"; 
      Response.Charset = ""; 
      System.IO.StringWriter sw = new System.IO.StringWriter(); 
      System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw); 
      grid.RenderControl(htw); 
      Response.Output.Write(sw.ToString()); 
      Response.Flush(); 
      Response.End(); 
      return RedirectToAction("Index"); 
     } 
    } 
} 

Вот вид, где он должен Dispaly данные и нажав кнопку Экспорт должен экспортировать файлу VIEW:

@using EmployeeAttendance_app.Models 



<div> 

@{ 

    var grid = new WebGrid(ViewData.Model, defaultSort: "EmplID"); 

} 

@grid.GetHtml() 

@using (Html.BeginForm("ToExcel","Home",FormMethod.Post)) 
{ 
    <button type="submit" >To Excel</button> 
} 
</div> 

ответ

0

Вы должны назвать параметр для ваших данных:

var grid = new WebGrid(source: ViewData.Model, defaultSort: "EmplID"); 

Также источник должен быть типа IEnumerable<object>, поэтому, если ваш класс модели не реализует IEnumerable<object>, вы должны изменить его или указать свойство модели для использования в качестве исходных данных для помощника WebGrid.

Смежные вопросы