2015-03-06 7 views
2

Я ищу способ передать DataTable в PartialView с помощью действия Controller. Или, если вы знаете лучший способ, я открыт для предложений.Передача данных с контроллера на PartialView

Контроллер:

public DataTable GetDailyOutput() 
{ 
    Graph g = repository.Graphs.Where(p => p.GraphID == 2).FirstOrDefault(); 
    DataTable dt = repository.GetGraphData(g.StoredProc); 
    return dt; 
} 

Вид:

<div id="dvCategoryResults"> 
    @{Html.Partial("_GetDailyOutput", Html.Action("GetDailyOutput", "Graph"));} 
</div> 

Частичный вид:

@model System.Data.DataTable 
@using System.Data 
<table> 
    <thead> 
     <tr> 
      @foreach (DataColumn col in Model.Columns) 
      { 
       <th> 
        @col.ColumnName 
       </th> 
      } 
     </tr> 
    </thead> 
    <tbody> 
     @foreach (DataRow row in Model.Rows) 
     { 
      <tr> 
       @foreach (DataColumn col in Model.Columns) 
       { 
        <td> 
         @row[col.ColumnName] 
        </td> 
       } 
      </tr> 
     } 
    </tbody> 
</table> 

Мой следующий шаг должен был бы обновить таблицу с вызовом Ajax и обновить PartialView.

ответ

6

Возможно, вам понадобится использовать AJAX. Вы можете поместить код ниже в обработчик событий, например обработчик для нажатия кнопки.

AJAX пример использования JQuery $.post():

$.post('@Url.Content("~/Graph/_GetDailyOutput")', function(data) { 
    $("#dvCategoryResults").html(data); 
}); 

контроллер действия:

public PartialViewResult _GetDailyOutput() 
{ 
    Graph g = repository.Graphs.Where(p => p.GraphID == 2).FirstOrDefault(); 
    DataTable dt = repository.GetGraphData(g.StoredProc); 
    return PartialView(dt); 
} 

Если вы предпочитаете, вы можете сделать частичный вид первоначально без использования JavaScript, делая

<div id="dvCategoryResults"> 
     @Html.Action("_GetDailyOutput", "Graph") 
</div> 
+0

PartialView не распознается intellisense, вы имеете в виду PartialViewResult? Это возвращает мне ошибку: Ошибка выполнения дочернего запроса для обработчика «System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper». – Whistler

+0

Да, извините, мой плохой! –

+0

У меня все еще такая же ошибка – Whistler

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