2015-06-05 6 views
-2

У меня есть эта следующая таблица: folder tableЛучше решение location.href

Это в основном загружена с использованием foreach в .cshtml с <tr><td> добавления. Когда я нажимаю на папку, она должна получить содержимое и перезагрузить таблицу новым содержимым. Я использую .ajax, чтобы получить содержимое, и используйте window.location.href, чтобы перезагрузить страницу. Однако для перезагрузки страницы требуется очень много времени, используя location.href. Кроме того, производительность страницы плохая, так как она снова вызывает код сервера на location.href. Что вы предлагаете для такой ситуации?

+0

Как вы обрабатываете кеш-клиент? –

+1

Зачем загружать страницу? – Curt

+0

@Curt: Как бы я обновил содержимое на одном столе? Новое содержимое вытягивается с сервера. – Saroj

ответ

0

Вы сказали что-то о .cshtml, поэтому я попытаюсь объяснить вам, как я это делаю в asp.net mvc.

Вы сказали, что используете вызов ajax. Ничего страшного.

Пожалуйста, создайте частичный вид (http://www.codeproject.com/Tips/617361/Partial-View-in-ASP-NET-MVC), который будет использоваться для отображения вида html для файлов. А внутри ваших действий (которые вы вызываете из AJAX)

public JsonResult RenderFilesView(int renderMyFolderId){ 
    var folderModelWithFiles = this._repository.GetFolderAndFilesModel(renderMyFolderId); 

    var filesViewHtml = this.RenderRazorViewToString("_FilesView", folderModelWithFiles); 

    return Json(new { FilesViewHtml = filesViewHtml }); 
} 

RenderPartialViewToString здесь: Render partial view to string MVC4

И вы получите в вашей функции успеха Аякса вызвать FilesViewHtml.

$.ajax(url: 'godKnows/RenderFilesView', 
     success: function(response){ 

       // access response.FilesViewHtml 
       // And you can do something like: 
       $('#container').html(response.FilesViewHtml); 
     }); 

И не нужно перезагружать страницу, или бог знает что.

+0

Я знал этот подход, но почему-то я избегал его из-за генерации уродливых строк HTML в C#. Однако похоже, что это единственный способ сделать это требование ... в любом случае спасибо за ваш ответ :) – Saroj

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