2016-07-11 2 views
1

У меня странный, у меня есть атрибут, который выполняет работу, описанную ниже, но странная часть заключается в том, что контроллер попадает/принимает, точка получает модель.Маршрутизация через контент RedirectToRouteResult равна

return new RedirectToRouteResult(new RouteValueDictionary(new 
{ 
    controller = controller, 
    action = action, 
    model = new LoginUserModel() 
    { 
     flowPartial = true, 
     gotoController = (string)rData.Values["controller"], 
     gotoAction = (string)rData.Values["action"], 
     formData = formDatas 
    } 
})); 

Здесь модель нуль

public ActionResult LoadPartialWithModel(LoginUserModel model) 
{ 
    return PartialView("~/Views/Partials/_Login.cshtml", model); 
} 
+1

Как вы ожидаете, что данные 'LoginUserModel' будут переданы через перенаправление? – haim770

+0

На самом деле, я надеялся, что он будет идти внутренне, но я предполагаю, что он должен быть в форме. Я не слишком опытен с маршрутизацией, поэтому все сводится к тому, что я понятия не имею. –

ответ

0

Я не думаю, что это может работать. Результат перенаправления отправит HTPP 301 в браузер с новым URL-адресом, который затем будет запрашиваться браузером в качестве запроса GET. Невозможно кодировать сложную модель в качестве параметра вашего запроса на получение. Это подтверждается привязкой модели к сообщению, но если вы посмотрите на детали, она становится довольно длинной. Одна вещь, которую вы могли бы сделать, чтобы ваш второй метод принимает простые параметры

public ActionResult LoadPartialWithModel(bool flowPartial, string controller, ....) 

, а затем в вашем redirectToRoute передавать их в качестве значений маршрута по отдельности. Это должно создать хороший URL-адрес с параметрами строки запроса, на которые браузер может перенаправлять

Это предполагает, что вам нужно пройти через браузер, потому что, если это не требуется, вы можете напрямую вызвать другой метод контроллера

return LoadPartialWithModel (new LoginUserModel() 
{ 
    flowPartial = true, 
    gotoController = (string)rData.Values["controller"], 
    gotoAction = (string)rData.Values["action"], 
    formData = formDatas 
}); 
Смежные вопросы