0

我正在尝试将通过 URL 传入的字符串建模绑定到控制器中的操作中的参数。

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

我的 Action 方法在哪里

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 中将requestPathInvalidCharacters添加到 httpRuntime,即:

<httpRuntime requestPathInvalidCharacters="">

以便日期时间字符串中的冒号不会导致A potentially dangerous Request.Path value was detected from the client (:).错误发生。

不过这有点不安全,因此您也可以在查询字符串中传递您的参数,并且它们将以这种方式正确建模绑定。

于 2013-10-05T19:06:29.030 回答