1

基本的に、ページングを使用して検索ページを作成したい場合は、次のようなURLが必要になります。

/Topics/Index?search=hi&page=1

私が理解できないように見えるのは、次の方法です。

A)検索なしでデフォルトルートを設定し、ページ1 / Topics / Index?page=1または/Topics/ Index?search =&page =1

B)Viewメソッドを使用して同じことを行う

コントロールにメソッドがある場合は、次のことがわかります。

Index(String search, Int32? page)

そして、URLを使用します:

/Topics/Index?search=hi&page=1 or /Topics/Index?search=hi

それは私がメソッドに望むものを私に与えます。トピックコントローラーのデフォルトルートを取得して、上記のリクエスト変数を使用してデフォルトのURLを作成する方法が必要です。私はそれを考えていません

/ Topics / Index / hi / 1

検索URLを助長します。主な理由は、検索用語やページがあるという保証がないため、次のようになってしまう可能性があるためです。

/トピック/インデックス/1

4

2 に答える 2

1

URLの一部にマップされないRouteValueDictionaryで渡したものはすべて、クエリ文字列パラメーターとして追加されます。だからあなたはすることができます:

Url.GenerateUrl("Route", "Index", "Topics", 
  new RouteValueDictionary(new 
    { 
      page = this.Model.PageNumber, 
      search = this.Model.Search
    });
于 2009-06-11T00:24:17.370 に答える
0

そのため、基本的には、コントローラーにデフォルトを設定して非値を処理することにしました。ただし、これが最善のアイデアかどうかはわかりません。

GLobal.asaxの場合:

routes.MapRoute
(
 "TopicDefault",                                              
 "Topic/{action}",                          
  new { controller = "Topic", action = "Index"}  
);

コントローラ上:

public ActionResult Index(Int32? parentForumId, Int32? pageNumber, Int32? amountToShow)
{

  Int32 revisedPageNumber = pageNumber.HasValue ? pageNumber.Value : 0;
  Int32 revisedAmountToShow = amountToShow.HasValue ? amountToShow.Value : 10;
  Int32 revisedParentForumId = parentForumId.HasValue ? parentForumId.Value : 1;

  IList<TopicCreateViewModel> modelValues =
     Topic.GetListForGrid(revisedParentForumId, revisedPageNumber, 
       revisedAmountToShow, out realPage)


  return View("Index", modelValues);
}
于 2009-06-12T17:02:22.587 に答える