2010-12-07 14 views
1

私はasp.net mvc.Actuallyに関するいくつかの質問をしたいと思います。私はWeb development.myの質問に慣れていません。私は2つのコントローラを持っています、1つはログインし、もう1つは というプロファイルです。ログイン後、私はprofile.soを呼び出したい、私はこの方法で使用する。ASP.Net MVCで渡すパラメータ

return RedirectToAction( "DiaplayProfile"、 "Profile"、new {personID = Person.personID});

私が渡したパラメータは、私がURL.iで表示したくないことを示しています。ウェブ開発では、データを送信するためにpostメソッドを使用すると、パラメータはURLに表示されません。 、私はパラメータを渡す必要がありますが、私はURLに表示したくありません。 MVC RedirectToActionのポストメソッドではどのように使用するのですか?また、TempData でデータを渡すテストを行っていますが、これを行うと後になってしまいます。また、 [AcceptVerbs(HttpVerbs.Post) ]この問題を解決するために?

私を正しい方法で案内してください。

よろしく チョン

答えて

2

あなたは、リダイレクトの一部としてポストを行うことはできません。あなたが単にリダイレクト先のURLをブラウザに渡しているので、リダイレクトはgetリクエストでなければなりません。 MVCでは、URLの一部としてIDを持つことは、実際には良いこととみなされます。私はそれを受け入れるだろう。パラメータをpersonIDにするのではなく、デフォルトのルーティングを使用できるようにidを使用します。

1345は、本人の idある
http://example.com/profile/display/1345 

:結局私はのように見えるURLで終わるしたいと思います。デフォルトのルーティングを使用している場合は、パラメータ(タイプint)を使用するDisplayメソッドを持つProfileControllerがあることを意味します。

return RedirectToAction("display", "profile", new { id = 1345 }); 

をところで、あなただけのHTTPアクションが応答する動詞かを制御するために、リダイレクトが行われる方法を制御するためにAcceptVerbs属性を使用することはできません:あなたは使用して、それにリダイレクトします。この場合、実際にはGETを受け入れることを望んでいると思います。あなたは実際にURLにidを入れたいと思っています。

+0

答えていただきありがとうございます、私の考えはまず静的なクラスを作成し、プロファイルコントローラに呼び出す前にデータを挿入します。これはデータを渡す必要はありません。どのようなコントローラからでも再利用できます。私はこの方法を使用していますか?URLでパラメータを表示しないようにするのは正しい方法ですか? :) – Chong

+0

@Chong - IDを超えて保存する必要のある余分なデータがある場合は、セッションを使用するか、次のリクエストでdbに永続化して戻すことができます。セッションオブジェクトを模倣する静的クラスを作成する必要はありません。 idだけの場合は、URLのままにしてください。 – tvanfosson

+0

ok tvanfosson、私たちの問題は、IDまたはnricを渡す必要がありますが、私たちは顧客ポリシーのURLにそれを表示したくありません。私たちがRedirectToActionでこれらのパラメータを渡すと、urlで表示されます。私は、セッションを使用するか、またはdbから読み込んで返す必要があると思います。 – Chong

関連する問題