0

URL 経由で渡された文字列をコントローラーのアクションのパラメーターにモデル バインドしようとしています。

例: http://www.example.com/Controller/Action/2013-10-04/

私のアクションメソッドはどこにありますか

public ViewResult Action(DateTime dateTime) {
  //some logic
}

私のルートマッピングは

routes.MapRoute("Example", "Controller/Action/{dateTime}/", new { Controller = "Controller", Action = "Action" });

上で指定した URL は機能し、dateTime には日付と時刻の 00:00:00 が正しく入力されます。ただし、時間も定義したいのですが、形式がどうあるべきかわかりません。それ以外に試してみると、dateTimeパラメーターのモデルバインドにまったく失敗します。

これは組み込みの ModelBinding でも可能ですか、それともカスタム モデル バインダーを作成する必要がありますか?

4

1 に答える 1

0

URL で通常どおり日時文字列 (例: 2013-09-23T16:47:00 ) を渡すだけであることがわかりますが、web.config のhttpRuntimeに requestPathInvalidCharactersを追加する必要があります。

<httpRuntime requestPathInvalidCharacters="">

日時文字列のコロンが原因でA potentially dangerous Request.Path value was detected from the client (:).エラーが発生しないようにします。

ただし、これは少し安全ではないため、代わりにクエリ文字列でパラメーターを渡すことができ、その方法でモデル バインドが正しく行われます。

于 2013-10-05T19:06:29.030 に答える