在ASP.NET MVC 3多个参数路线 [英] Routes with multiple arguments in ASP.NET MVC 3

查看:116
本文介绍了在ASP.NET MVC 3多个参数路线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想建立动态路由在MVC应用程序,我有这个迄今为止...

I am trying to set up dynamic routes in an MVC app, and I have this so far...

string conString = "YATAYATAYATA";

        SqlConnection con = new SqlConnection(conString);
        SqlCommand cmd = new SqlCommand();

        // Retrieve routes from database
        cmd.CommandText = "SELECT R.*,S.* FROM Routes R INNER JOIN Sites S ON S.ID = R.SiteID WHERE S.ID = 1";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;

        con.Open();

        SqlDataReader rdr = cmd.ExecuteReader();

        while (rdr.Read())
        {
            routes.MapRoute(
            rdr["name"].ToString(),             // Route name
            rdr["url"].ToString(),   // URL with parameters
                new
                {
                    controller = rdr["controller"].ToString(),  // Controller name
                    action = rdr["action"].ToString(),          // Action name
                    id = UrlParameter.Optional                 // Parameter defaults
                } 
            );
        }

和是现在工作的伟大,我遇到的唯一问题是,我想必​​须指定数据库的可选参数以逗号分隔列表,我可以拉出来的能力等......

And that is working great for now, the only issue I am having is that I would like to have the ability to specify a comma delimited list of optional arguments in the database that I could pull out like...

Array optParams = rdr["parametersOpt"].ToString().Split(',');

但我不知道如何坚持这些PARAMS到路由对象正常。可能仅仅是一个小C#语法我不熟悉。

But I was not sure how to stick those params into the route object properly. Could just be a minor C# syntax I am not familiar with.

推荐答案

感谢@qstarin我指出了正确的思维过程...

Thanks to @qstarin I was pointed in the right thought process...

在许多麻烦和困难...

After much trouble and hardship...

while (rdr.Read())
        {
            Route invRoute = new Route(rdr["url"].ToString(), new MvcRouteHandler());

            RouteValueDictionary defaults = new RouteValueDictionary();
            defaults.Add("controller", rdr["controller"].ToString());
            defaults.Add("action", rdr["action"].ToString());

            Array arrParams = rdr["parametersOpt"].ToString().Split(',');

            foreach (string i in arrParams)
            {
                defaults.Add(i, UrlParameter.Optional);
            }

            invRoute.Defaults = defaults;

            routes.Add(rdr["name"].ToString(), invRoute);
        }

这是我的解决方案...

This was my solution...

这篇关于在ASP.NET MVC 3多个参数路线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆