1

URL書き換えを実現するために、以下のコードを書きました。

Global.asax で

          routes.MapRoute(
          "StudentDetail", // Route name
          "StudentDetail", // URL with parameters
          new { controller = "UDashboard", action = "UAboutMeStudentDetails", 
                SortField =  UrlParameter.Optional }
      );

ビューで

 <a href="/StudentDetail?SortField='Major'" >Students</a>

リンクをクリックすると、完璧なコントローラーのアクションに移動します。

しかし、私のURLは

 https://localhost/StudentDetail?SortField='Major' 

そして、私はそれを望んでいません。

URLを次のようにしたいだけです

 https://localhost/StudentDetail

上記の URL を実現するには、どのような変更を行う必要がありますか?

4

2 に答える 2

0

SortField の値を常に Major にしたいが、URL には表示したくない場合は、次のようにするだけです。

routes.MapRoute(
   "StudentDetail", // Route name
   "StudentDetail", // URL with parameters
   new { controller = "UDashboard", action = "UAboutMeStudentDetails", 
         SortField = "Major" }
);

しかし、Major が Url に表示されている場合は、リンクを生成しているときに、何らかの方法でそれをヘルパーに渡していることを意味します。ヘルパーからそれを削除することを確認する必要があります。それでもフィールドを受け入れたいが、デフォルトで Major にする場合は、次のようにします。

routes.MapRoute(
   "StudentDetail", // Route name
   "StudentDetail/{SortField}", // URL with parameters
   new { controller = "UDashboard", action = "UAboutMeStudentDetails", 
         SortField = "Major" }
);
于 2013-08-26T15:39:47.047 に答える
0

TempData または Session を使用して何らかの方法でパラメーターを保存しGET、クリーンなリンクでを呼び出す方法はたくさんあります。

<a href="/StudentDetail" >Students</a>

しかし、私はそれをテストしていないので、より一貫性のある別のアプローチを使用することができGETますPOSTSortField

@using (Html.BeginForm("UAboutMeStudentDetails", "UDashboard", new { SortField = "Major" }, FormMethod.Post, null))
{
    @Html.Hidden("SortField", "Major")
    <button type="submit">Students</button>
}
于 2013-08-26T15:24:51.250 に答える