1

私はコントローラ/アクションを持っています:

public partial class MyControllerController : Controller {

  public virtual ActionResult Index(string name, string category, DateTime? from = null, DateTime? to = null)
  {
    // ...
  }
}

URL が次のようになるようにします。

/MyController/myname/mycategory
/MyController/myname/mycategory?from=10%2F01%2F2013%2000%3A00%3A00&to=10%2F31%2F2013%2023%3A59%3A59

次のルート登録を試しました:

routes.MapRoute(
  "MyRoutes",
  "MyController/{name}/{category}/",
  new
  {
    controller = "MyController",
    action = "Index",
    from = UrlParameter.Optional,
    to = UrlParameter.Optional
  });

受信 URL を受け入れますが、メソッドを使用すると正しい送信 URL が生成されませんUrl.Action()。私Url.Action()はいつも次のような住所を返します:

/CouponManager?name=myname&category=mycategory&from=08%2F01%2F2013%2000%3A00%3A00&to=08%2F31%2F2013%2023%3A59%3A59

誰でも助けることができますか?

4

2 に答える 2

1

を使用しUrl.RouteUrlます。例えば:

Url.RouteUrl("MyRoutes", new { name = "myname", category = "mycategory" })

または

Url.RouterUrl("MyRoutes", new { name = "myname", category = "mycategory", from = fromDate, to = toDate })

また、ルート定義で from と to を削除して、次のようにします。

routes.MapRoute(
  "MyRoutes",
  "MyController/{name}/{category}/",
  new
  {
    controller = "MyController",
    action = "Index"
  });

名前とカテゴリをルートのオプション パラメータとしてリストするか、デフォルト値を指定するかを選択できますが、クエリ文字列としてではなく URL ルートの一部として使用しない限り、from と to はそこに属しません。

于 2013-10-04T14:34:46.677 に答える