0

モノレールでは、記事の投稿にわかりやすいURLを与えるためにURL書き換えルールを作成しようとしています。URLは次のようになります。

http://domain.com/2010/11/29/Winter-snow-warning

そして、URLを書き直すためのglobal.asax.csのコードは次のとおりです。

RoutingModuleEx.Engine.Add(
                new PatternRoute("/<year>/<month>/<day>/<title>")
                    .DefaultForController().Is("post")
                    .DefaultForAction().Is("show")
                    .Restrict("year").ValidInteger
                    .Restrict("month").ValidInteger
                    .Restrict("day").ValidInteger
            );

これはうまく機能しますが、URLに感嘆符がある場合:

http://domain.com/2010/11/29/Winter-snow-warning !!

次に、書き換えルールに一致せず、コントローラー「2010」が見つからないとエラーが発生します。私はここで何が欠けていますか、これはモノレールのバグですか?

4

1 に答える 1

0

おそらく、Monorailのルーティングのデフォルトの一致メカニズムは感嘆符を受け入れていないため、ルート/controller/actionは一致せず、代わりにデフォルトのルールが一致し、2010コントローラーが存在しないため失敗します。

簡単な回避策は、タイトルをニーズに合った正確な表現に制限することです。例えば:.Restring("title").ValidRegex("[-_.+!*'() a-zA-Z0-9]+]")

于 2010-12-06T06:31:52.163 に答える