0

MVCnewbeeはこちら。メインビュー(Index.cshtml)を備えたMVC3プロジェクトがあります。このビューから、CreateRemark.cshtmlビューに移動できます。このビューでコメントを作成して保存できます。POSTアクションでは、データをデータベースに永続化するロジックがあり、インデックスビューを再度レンダリングしたいと思います。

これは、アクションCreateRemarkの最後に次のように記述して行います。

Return View("Index");

私のURLはlocalhost/またはlocalhost/Indexのようになると思っていました。しかし、実際にはインデックスビューにあるhtmlをレンダリングしている間、localhost / CreateRemark?id=123と言い続けます。しかし、それは間違っています(私は完全に調査していませんが、ボタンのすべての画像が欠落しており、階層グリッドは第2レベルを欠落しています)、エンドユーザーをインデックスビューに誘導することでこれを解決できると思います正しいMVCマナー。私はそれを間違っていると思います。

ちなみに、GET / POSTアクションのIndexとCreateRemarkは、どちらも同じホームコントローラーにあります。後でRemarkControllerが必要だと思いますが、まだ実行していません。ごめん。

誰かが私を正しい方向に向けることができますか?よろしくお願いします。

4

2 に答える 2

3

同じコントローラーアクションから別のビューを返すだけなので、URLは同じままです。

ユーザーがインデックスアクションを呼び出した場合と同じアクションを単に発生させたい場合は、

  return RedirectToAction("Index");

http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoaction%28v=vs.108%29.aspx

于 2013-03-11T13:27:43.013 に答える
1

URLは、ユーザーがナビゲートしたものです。彼らがそのページに移動した場合(「このビューから...に移動できると思います)」、それがURLです。

入力する文字列Return View("Index")は、URLとは何の関係もありません。これは、使用するビューファイルをビューエンジンに指示するだけです。その時点でURLを変更できる唯一の方法は、インデックスアクション/ルートへのリダイレクトを返すことです。

return RedirectToAction("Index");

これには、クライアントへの追加のhttpリクエストが含まれることに注意してください。

于 2013-03-11T13:28:25.417 に答える