2014-09-05 1 views
0

Так что я Частичный вид, что нагрузки с использованием:Resfreshing мой Partial в Javascript

@Html.Partial("_partial", Model, new ViewDataDictionary { { "DisplayCheckbox", true } }) 

В этой _partial странице петля, которая выглядит следующим образом

@foreach (var w in Model.WeekEndingDateRange) 
{ 
    <th>@w.WeekEndingDate.FormatDate()</th> 
} 

, который создает заголовки таблицы для jquery tinytable (который позже заполняется данными на мой взгляд).

Проблема, с которой я столкнулся, заключается в том, что Model.WeekEndingDateRange может измениться. Когда пользователь нажимает на кнопку, чтобы фильтровать результаты, показанные на столе, он делает Ajax вызов на мой контроллер, который выглядит следующим образом

function filterResults(){ 
    //do some stuff like creating "model" 

    $.ajax({ 
     type: "POST", 
     url: "@Url.Action("FilterTable", "Report")", 
     data: model 
    }) 
    .done(function (data) { 
     //continue on to populate table data 

Когда Аякс заканчивает вызов, я могу сделать вызов, как:

data.WeekEndingDateRange 

, чтобы захватить список, который я хочу, чтобы частичный цикл. Это создаст (размер списка data.WeekEndingDateRange) количество заголовков для таблицы.

Поэтому мне нужен способ для неравнодушен к не захватить Model.WeekEndingDateRange, но вместо того, чтобы захватить data.WeekEndingDateRange. Таким образом, до того, как таблица будет отфильтрована, частичное не будет создавать заголовки (поскольку в таблице не заполняется информация), и как только пользователь будет фильтровать свои результаты, таблица создаст новый заголовок для каждого элемента в данных. WeekEndingDateRange.

Я уже пробовал делать:

@Html.Partial("_ProjectAllocationReport", data, new ViewDataDictionary { { "DisplayCheckbox", true } })') 

после моего AJAX вызова, но это не будет работать, так как данные из области видимости.

Любая помощь была бы принята с благодарностью!

ответ

0

Я предлагаю вам просто использовать ваш взгляд. Вы на самом деле DO хотите получить партию для захвата Model.WeekEndingDateRange. Проблема в том, что вы не обновляете WeekEndingDateRange модели.

Таким образом, ваш Ajax вызов будет что-то вроде

function filterResults() 
{ 
    $.ajax({ 
     type: "POST", 
     url: "", 
     data: model, 
     datatype: "html" 
    }).done(function(html) 
    { 
     $("HeaderElementHere").html(html); 
    }); 
} 

И в контроллере, сделайте

Model.WeekEndingDateRange = data.WeekEndingDateRange 
@Html.Partial("_partial", Model, new ViewDataDictionary { { "DisplayCheckbox", true } }) 

Все, что вы на самом деле хотите сделать, это пройти некоторую конечную дату, что ваш View использует для это цикл, чтобы сгенерировать ваш HTML-код, а затем передать это обратно в вызов ajax, который будет помещен на вашу страницу.