1

ASP.NET MVC 2 によって生成される既定のスキャフォールディング ビューには、次のようなリンクが含まれています。

<%: Html.ActionLink("Back to List", "Index") %>
<%: Html.ActionLink("Create New", "Create") %>

同じルートからこのページにアクセスした場合、これらのリンクは完璧です。しかし、たとえば、Orders と Persons があり、/Orders/Edit/17経由/Persons/Orders/3で移動した場合、「Edit Orders」ビューは注文のみを認識しているため、「back to list」は、目的の Persons ルートではなく Orders ルートに戻ります。これはナビゲーションをぎこちなくし、流れを壊します..

どこから来たかに関係なく、同じ「注文の編集」ビューを再利用したいのですが、この情報を渡す方法がわかりません。

次のようなパラメーターを渡すことができることはわかっています/Orders/Edit/17?myparam=myvalueが、グリッドの並べ替え/フィルター順序を示すパラメーターを渡す必要がある場合、後で選択肢が制限されますか?

リンクを適切にレンダリングできるように、リターン/オリジンの場所をビューに渡すための推奨される方法は何ですか? それ以外の場合、コントローラーとは異なる方法でビューを呼び出すにはどうすればよいですか?

編集:

クリーンなソリューションについては、この投稿を参照してください

4

2 に答える 2

1

同じ名前を使用しない限り、クエリ文字列を介してパラメータを渡すことで実際に制限されることはありません。クエリ文字列にはサイズ制限がありますが、おそらくヒットしないでしょう。

それが基本的に私がそれをする方法です。他の人が何を答えているのか知りたいです。

于 2010-09-23T22:49:59.693 に答える
0

この機能は、フレームワークで考慮されるべきもののように思えます。これらのパラメーターを指定する必要があるのは、ナビゲーションのすべてのレベルで指定する必要があるため、かなりハックに思えます。

なんで?back は、履歴とともにブラウザーに属するものです。しばらくの間そうでしたが、なぜフレームワークがそれを処理する必要があるのでしょうか?

必要なものは標準ではありません。

さらに、コードをドライに保つ責任があります。あなたが持っているすべての繰り返しが呼び出している関数の名前であるという方法でそれを確実に処理できます。

于 2010-09-24T00:06:07.090 に答える