2016-07-11 11 views
1

私は奇妙なことをしています、私は仕事を実行する属性を持っていますが、奇妙な部分はコントローラがヒット/受け入れ、ここでRedirectToRouteResultのコンテンツを経由するルーティングはnullです

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

nullです。リダイレクト結果は、ブラウザにGET要求としてブラウザによって要求される新しいURLと共にHTPP301をブラウザに送信する。複雑なモデルを取得リクエストのパラメータとしてエンコードする方法はありません。これはポストのモデルバインドでサポートされていますが、詳細を見るとかなり長くなります。あなたができる ことの一つは、あなたの第二の方法は、単純なパラメータ

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 
}); 
関連する問題