2016-12-20 3 views
0

Я новичок в mvc, и я пытаюсь создать простую страницу со столом и ajax-поиском.Запомнить параметры поиска

Например, у меня есть модель поиска, которая передает параметры из формы в контроллер.

Модель:

public class OrderSearchViewModel 
{ 
    [Display(ResourceType = typeof(Lang), Name = "OrderID")] 
    public int? OrderID { get; set; } 

    [Display(ResourceType = typeof(Lang), Name = "DeliveryType")] 
    public int? DeliveryTypeID { get; set; } 

    [Display(ResourceType = typeof(Lang), Name = "Partner")] 
    public string CustomerName { get; set; } 

    public SelectList DeliveryTypes { get; set; } 

} 

В контроллере у меня есть действие ведьмы возврата Вид с формой:

public ActionResult Index() 
{ 
    var ordersSearchModel = // default init; 
    return View(model); 
} 

В моей Index.cshtml У меня есть форма

@model Models.Order.OrderSearchViewModel 

<div class="row"> 

@using (Ajax.BeginForm("Orders", "Order", new AjaxOptions {UpdateTargetId = "ordersList"}, new {@id = "searchForm", @class = "form-horizontal"})) 
{ 
     // Editors templates for each params   
} 
</div> 

<div id="ordersList" class="row"> 

</div> 
} 

В моей Контроллер У меня есть метод, который использует модель поиска и возвращает частичный вид

[HttpPost] 
public async Task<ActionResult> Orders(OrderSearchViewModel model, int page = 1, int pageSize = 50) 
{ 
    var models = // connect to db and get data filtered by model params 
    return PartilaView("_View", models);   
} 

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

@Html.ActionLink("Back", "Index", "Order", new { @class = "btn btn-default" }) 

И нажмите на эту ссылку я получаю вид индекса в по умолчанию (без параметров поиска) и пользователь должен заполнить его еще раз. Что будет лучше всего запоминать параметры поиска пользователя? Спасибо за любой совет.

+0

Если вам нужен фильтр поиска только следующий запрос, вы можете использовать TempData. – jomsk1e

+0

В таких случаях использования было бы лучше использовать параметры запроса – devqon

ответ

0

Как сказал devqon, предпочтительный подход является использование параметров запроса, но это звучит как ваше использование может сделать это немного трудно управлять

TempData/SessionData может решить вашу проблему, но при использовании этого подхода приведет к проблемы, если пользователь решит использовать приложение в нескольких вкладках/окон (все они будут один и тот же поиск PARAMS)

что-то, что может быть стоит посмотреть на это SessionStorage. (ссылка ниже)

Этого типа хранения сохраняется, пока браузер остается открытым

И главное

Открытие страницы в новой вкладке или окне приведет к новой сессии, которая будет инициирована

Так что ваши страницы не должны делить государство.

Подробнее здесь: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage