gpt4 book ai didi

asp.net-mvc - Url.Action 基于当前路由

转载 作者:行者123 更新时间:2023-12-04 14:52:47 25 4
gpt4 key购买 nike

我想根据现有路由生成一个新 URL,但会添加一个新参数“页面”
这里有一些例子:

旧:~/localhost/something?what=2
新:~/localhost/something?what=2&page=5

旧:~/localhost/Shoes
新的:~/localhost/Shoes/5

我不能只是将 &page=5 附加到现有的 url,因为路由可能不同。
有些使用查询字符串,有些不使用。

最佳答案

我有一个类似的问题,并采取了扩展 UrlHelper 的方法。 View 中的代码如下所示:

<a href="<%= Url.AddPage(2) %>">Page 2</a>

UrlHelper 扩展看起来像:
using System.Web.Mvc;
using System.Web.Routing;
using System.Collections.Specialized;

public static class UrlHelperExtension
{
public static string AddPage(this UrlHelper helper, int page)
{

var routeValueDict = new RouteValueDictionary
{
{ "controller", helper.RequestContext.RouteData.Values["controller"] },
{ "action" , helper.RequestContext.RouteData.Values["action"]}
};

if (helper.RequestContext.RouteData.Values["id"] != null)
{
routeValueDict.Add("id", helper.RequestContext.RouteData.Values["id"]);
}

foreach (string name in helper.RequestContext.HttpContext.Request.QueryString)
{
routeValueDict.Add(name, helper.RequestContext.HttpContext.Request.QueryString[name]);
}

routeValueDict.Add("page", page);

return helper.RouteUrl(routeValueDict);
}
}

一些注意事项:我检查 ID,因为我没有在所有 route 使用它。我在最后添加 Page 路由值,因此它是最后一个 url 参数(否则您可以将它添加到初始构造函数中)。

关于asp.net-mvc - Url.Action 基于当前路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com