1

MVC 4 アプリケーションを作成しようとしていますが、これは初めてです。ルートを特定のファイル拡張子にマップするにはどうすればよいですか?

私はこのようなことをしたい:

Controller/Action/ (maybe an ID) 

これは、ユーザーがブラウザーで表示できるように、MVC ビューを返す必要があります。

別のシナリオでは:

Controller/Action/ (Maybe an ID) .json

また:

Controller/Action/ (Maybe an ID) .xml

これは同じオブジェクトを返す必要がありますが、Web サービスが使用するために JSON または XML で返されます。

4

2 に答える 2

0

拡張機能へのマッピングはそれほど多くありません。MVC4のURLはファイルに直接対応する必要はありません。代わりに、コントローラーのアクションに対応するルートを登録します。したがって、このために、次のルートを持つことができます。

  • /something/page/{ID}どのリンクにどのリンクをSomeController.ShowPage(int ID)返すかViewResult
  • /something/page/{ID}/xmlどのリンクにどのリンクをSomeController.PageAsXML(int ID)返すかXDocument
  • /something/page/{ID}/json which links toSomeController.PageAsJSON(int ID)which returns aJsonResult`

これらのルートは、サーバーの起動時にApplication_Start()コードで呼び出されるメソッドによって登録されます。XMLページの例の単純なルート登録は次のようになります。

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
        "PageView_XML",
        "{controller}/page/{id}/xml",
        new { id = "" }  
        );
    }
}

ここでは、ルートは、 aとa"PageView_XML"もある架空の命名スキームに適合するように呼び出されます。名前は一意である必要があります。パターンに一致するすべてのURLはこのルートを使用します。ここで、のように記述されたものはすべて、適切な場所の任意の文字列に一致するパラメーターです。デフォルト値(空の文字列)が指定されていることに気付くでしょう。これはおそらくあまり役​​に立ちません。コントローラメソッドが認識し、代わりに適切なエラーページを表示するために使用するものを選択できます。"PageView""PageView_JSON"{controller}/page/{id}/xml{this}{id}""

{param}タグとテキストを混在させることができるので、{controller}/page/{id}-xmlまたは機能し{controller}/page/{id}_{format}ます。処理方法が異なる可能性があるため、よくわかり{controller}/page/{id}.xmlません。{controller}/page/{id}.{format}.

ルートの追加の詳細については、ルーティングに関するMSDN情報、特にこのビットを参照してください。O'Reillyにもいくつかの便利な情報があります。

于 2013-02-15T11:05:12.270 に答える
0

MVC4 Web API の Json および Xml Mediatypeformatters で AddUrlPathExtensionMapping という拡張メソッドを使用して、これらの特定の形式でデータを要求できるようにすることができます。

于 2013-02-15T16:31:17.123 に答える