asp.net-mvc – 追加?param =到mvc路由

发布时间:2020-02-14 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了asp.net-mvc – 追加?param =到mvc路由编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一些MVC站点在路由Url上附加了查询字符串参数(我注意到StackOverflow的作用),例如:

https://stackoverflow.com/questions/tagged/java页= 9802&放大器;排序=最新及放大器;页面大小= 15

将参数设置为更常规的?querystring params,而不是/ param / values /?有什么好处?

此外,这些参数如何附加到已设置的路线上?我熟悉使用诸如“users / details / {id}”之类的参数设置mvc路由但是不知道如何配置使用1个或更多的路由?params如上面的示例url?

解决方法

当您有多个可选参数并且不希望包含非指定参数的默认值只是为了满足路径时,查询字符串参数很有用.

并且您无需执行任何特殊操作即可将这些参数包含在呈现的URL中.

以下面的路线为例:

routes.MapRoute
(
    "QuestionsTagged","questions/tagged/{tag}",new { controller = "Questions",action = "Tagged" }
);

如果使用以下方法呈现指向该路线的链接:

Url.RouteUrl
(
    "QuestionsTagged",new
    {
        tag = "java",page = 9802,sort = "newest",pagesize = 15
    }
 )

…然后路由引擎足够聪明,可以看到路由包含一个名为tag的参数,并且传递的路由值对象也有一个名为tag的东西,因此它在路由中使用该值.

在路径中没有相应参数的任何提供的路由值(在这种情况下为page,sort和pagesize)作为查询字符串参数被添加.因此上面的Url.RouteUrl调用将返回/ questions / tagged / java?page = 9802& sort = newest& pagesize = 15.

并且您的操作方法可以在其签名中明确列出这些参数(提高可读性和可维护性),或者您可以通过Request.QueryString访问它们.

public class QuestionsController : Controller
{
    // I can explicitly list the parameters in my signature and let routing do
    // its magic,like this...
    public ViewResult Tagged(string tag,int? page,int? pagesize)
    {
        // ...or I can grab parameters like this:
        string sort = Request.QueryString["sort"];

        return View();
    }
}

请注意,action方法的参数不必与路径中指定的参数匹配. (在路由中,我只指定了标记,但是操作方法的签名列表标记,页面和页面大小.)但是,动作方法的任何参数(也不是路径的参数)必须是引用或可空类型.

总结

以上是编程之家为你收集整理的asp.net-mvc – 追加?param =到mvc路由全部内容,希望文章能够帮你解决asp.net-mvc – 追加?param =到mvc路由所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!