5

ASP.NETMVC3アプリケーションでAttributeRoutingを使い始めたところです。私は-no-コントローラーから始めました。(新しい空のMVC3アプリケーション)

それから私はエリアを作りました。(呼ばれるDocumentation:)

次に、コントローラーを追加しました(DocumentationController:)

私はそれからこれをしました。

[RouteArea("Documentation")]
public class DocumentationController : Controller
{
    [GET("Index")]
    public ActionResult Index()
    {
        return View();
    }
}

そして、次のルートが機能します。/documentation/index

しかし、どうすればこれら2つのルートを機能させることができますか?

1- /<-(デフォルトルート/特定のルートは指定されていません)2- /documentation<-「インデックス」サブルートセクションが追加されていません。

これはAttributeRoutingで実行できますか?

アップデート:

デフォルトのASP.NETMVC3構造などでこれを行う方法を知っています。私がやろうとしているのは、代わりにAttributeRoutingを介してこれを理解することです。

4

1 に答える 1

9

「/」と「/documentation」をDocumentationController.Indexにマップする必要があると思います。もしそうなら、これを行います:

[RouteArea("Documentation")]
public class DocumentationController : Controller
{
    [GET("Index", Order = 1)] // will handle "/documentation/index"
    [GET("")] // will handle "/documentation"
    [GET("", IsAbsoluteUrl = true)] // will handle "/"
    public ActionResult Index()
    {
        return View();
    }
}

少し説明:

  • GET( "Index")のOrder = 1は、アクションのプライマリルートとしてマークします。リフレクションがどのように機能するかにより、Orderプロパティを使用せずにアクションの属性の順序を決定する方法はありません。こちらをご覧ください
  • 複数のgetルートを1つのアクションにマップすることができます。こちらをご覧ください
  • IsAbsoluteUrlプロパティを使用すると、RouteArea属性とRoutePrefix属性によって追加されたURLプレフィックスを上書きできます。そのため、最終ルートはルートリクエストと一致します。こちらをご覧ください

お役に立てれば。あなたがやろうとしていることについての私の最初の仮定が正しくない場合は、コメントしてください。

于 2012-02-19T20:09:52.147 に答える