0

私はどこでもエリアを使用しており、次のようなものが必要です:

http://localhost/MyArea/MySection/MySubSection/Delete/20

通常、次のようにしてアクセスします。

http://localhost/MyArea/MySection/MySubSection/20

しかし、削除したい場合は、言わなければなりません

http://localhost/MyArea/MySection/DeleteEntryFromMySubSection/20

ルートでは、これをどのように行うのですか? (ちなみに、ルートは現実的ではありません。私のシステムでは、これよりもはるかに簡潔です)

EDIT : これは特に、ASP.NET MVC 2 Preview 2 機能である Areas の使用に関連しています。

4

1 に答える 1

0

ルートとコントローラーが現在どのように構成されているかによって異なります。

使用するルートの例を次に示します。

次のルートを呼び出して削除できるようにしたい場合:

http://localhost/MyArea/MySection/MySubSection/Delete/20

また、「MyAreaController」という名前のコントローラーがあり、アクションが「削除」であると仮定しましょう。簡単にするために、セクションとサブセクションが単なる文字列であると仮定しましょう。

public class MyAreaController : Controller
{
    public ActionResult Delete(string section, string subsection, long id)
    {

次に、次の方法でルートを作成できます (Global.asax.cs、またはルートを定義する場所)。

var defaultParameters = new {controller = "Home", action = "Index", id = ""};            

routes.MapRoute("DeleteEntryFromMySubSection", // Route name - but you may want to change this if it's used for edit etc.
            "{controller}/{section}/{subsection}/{action}/{id}", // URL with parameters
            defaultParameters   // Parameter defaults
            );

注: 通常は、考えられるすべてのパラメーター値に対して列挙型を定義します。次に、params を適切な列挙型にすることができ、パスで引き続き文字列を使用できます。たとえば、「MySection」値を持つ「Section」列挙型を持つことができます。

于 2009-10-23T10:38:32.050 に答える