2017-11-30 3 views
0

私は成功したURLに統合された支払いゲートウェイを持っています。あるコントローラから別のコントローラにデータを渡したいのですが、正しく動作していない場合があります。SessionまたはTempDataを使用して1つのコントローラから別のコントローラに値を渡すことはできませんか?

public void Index(UserRegistreModel model) 
{   
    TempData["model2"]= model; 
redirecturl += "&return=" + ConfigurationManager.AppSettings["SuccessURL"].ToString(); 
} 

public ActionResult AnotherControllerMethod(UserRegistreModel model) 
{ 
UserRegistreModel add = (UserRegistreModel) TempData["model2"]; 
//not getting any values 
} 
+0

は、私はちょうど私のコードを変更しましたもう一度見直してもらえますか?戻り値RedirectToAction( "AnotherControllerMethod"、 "ControllerName"、new {model = model})を追加すると、それは私にエラーを返すことを示すvoid、戻り値のキーワードの後に​​オブジェクト式を続けることはできません – Rocky

+0

変更すると、戻り値の型はすべてのコードパスが値を返すわけではないと言います – Rocky

答えて

0

どのようにデータを渡していますか?転送かリダイレクトですか?転送は、同じリクエストであるためリクエストオブジェクトの現在のデータを受け取りますが、ur URLはクライアントでは変更されません。

そして、uが新しいリクエストをリダイレクトしている場合。この場合、レスポンスはクライアント(ブラウザ)に送られ、新しいコントローラに送られます。新しいリクエストであるため、コールコントローラーからの古いデータはありません。

RedirectAttributesと呼ばれる特別な種類のpojoがあります。このタイプの要件にはFlashAttributeを追加できます。 .NETで

1

あなたは、一時データへのユーザーの型クラスを追加しているが、これが空だった理由ですので、UserRegistreModelタイプを抽出していると同じようなことを確認し、次のように使用します。 -

public void Index(User model) 
{   
    TempData["model2"]= model; 
    redirecturl += "&return=" + 
    ConfigurationManager.AppSettings["SuccessURL"].ToString(); 
} 

public ActionResult AnotherControllerMethod(User model) 
{ 
    User add = (User) TempData["model2"]; 
    //not getting any values 
} 
+0

私のコードを変更しました。再度確認してください... – Rocky

+0

インデックス機能を呼び出す方法を教えてください –

+0

Rocky

関連する問題