Asp.net mvc 如何将当前URL参数传递给方法进行替换

Asp.net mvc 如何将当前URL参数传递给方法进行替换,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我正在使用twitter.bootstrap.mvc中的HTML助手类。它将为引导建立页面链接列表 如何将当前URL参数传递到此函数 public static MvcHtmlString Pager(this HtmlHelper helper, int currentPage, int totalPages, Func<int, string>

我正在使用
twitter.bootstrap.mvc
中的HTML助手类。它将为引导建立页面链接列表

如何将当前URL参数传递到此函数

public static MvcHtmlString Pager(this HtmlHelper helper,
                                  int currentPage, int totalPages,
                                  Func<int, string> pageUrl,   <-- This
                                  string additionalPagerCssClass = "") {
    ...
    a.MergeAttribute("href", pageUrl(i));
    ...
}
x=>Url.Action(“Results”,“Search”,new{page=x})
是我不知道如何更改的部分。这是一个搜索结果页面,URL中的搜索设置作为参数。为了使分页工作,我需要这些参数

指定每个参数并将其包含在ViewModel和URL中是我唯一的选择吗

是我唯一可以指定每个参数并在 ViewModel以及URL

这可能不是您唯一的选择,您可以使用
ViewData
或cookies,但这可能是最好的选择

ViewModel应该包含渲染视图所需的所有数据。鉴于分页控件依赖于此数据,因此将其作为ViewModel的一部分并非不合理

您的视图看起来仍然相当整洁

e、 g

如果您有很多参数t pass,您可以通过创建一个特殊的“Paging”类来增强它,该类将保存分页所需的所有详细信息,并将其作为您的模型的属性修改HtmlHelper以接受它,从而整理一些代码

e、 g

公共类分页详细信息
{
公共整型TotalPages{get;set;}
public int CurrentPage{get;set;}
公共整数TotalResults{get;set;}
公共字符串搜索{get;set;}
公共字符串OrderBy{get;set;}
…其他参数。。。
}
公共静态MvcHtmlString寻呼机(此HtmlHelper帮助程序,
Func pageUrl,
分页详细信息分页详细信息,
字符串AdditionalPagerCSClass=“”)
{
//需要对此进行调整,以便将额外的参数附加到生成的URL中
}
`@Pager(x=>Url.Action(“结果”,“搜索”,新建{page=x},Model.PagingDetails))`
是我唯一可以指定每个参数并在 ViewModel以及URL

这可能不是您唯一的选择,您可以使用
ViewData
或cookies,但这可能是最好的选择

ViewModel应该包含渲染视图所需的所有数据。鉴于分页控件依赖于此数据,因此将其作为ViewModel的一部分并非不合理

您的视图看起来仍然相当整洁

e、 g

如果您有很多参数t pass,您可以通过创建一个特殊的“Paging”类来增强它,该类将保存分页所需的所有详细信息,并将其作为您的模型的属性修改HtmlHelper以接受它,从而整理一些代码

e、 g

公共类分页详细信息
{
公共整型TotalPages{get;set;}
public int CurrentPage{get;set;}
公共整数TotalResults{get;set;}
公共字符串搜索{get;set;}
公共字符串OrderBy{get;set;}
…其他参数。。。
}
公共静态MvcHtmlString寻呼机(此HtmlHelper帮助程序,
Func pageUrl,
分页详细信息分页详细信息,
字符串AdditionalPagerCSClass=“”)
{
//需要对此进行调整,以便将额外的参数附加到生成的URL中
}
`@Pager(x=>Url.Action(“结果”,“搜索”,新建{page=x},Model.PagingDetails))`
@Html.Pager(Model.PageIndex, Model.TotalPages, x => Url.Action("Results", "Search", new { page = x }))
`@Html.Pager(Model.PageIndex, Model.TotalPages, x => Url.Action("Results", "Search", new { page = x, search = Model.Search, orderBy = Model.OrderBy }))`
public class PagingDetails 
{
   public int TotalPages { get; set; }
   public int CurrentPage { get; set; }
   public int TotalResults { get; set; }
   public string Search { get; set; }
   public string OrderBy { get; set; }
...other parameters...
}

public static MvcHtmlString Pager(this HtmlHelper helper,
                                  Func<int, string> pageUrl,  
                                  PagingDetails pagingDetails,                             
                                  string additionalPagerCssClass = "") 
{
   // need to tweak this to append extra parameters to resulting URL
}



`@Html.Pager(x => Url.Action("Results", "Search", new { page = x }, Model.PagingDetails))`