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))`