在ASP.NET MVC 3多个参数路线 [英] Routes with multiple arguments in 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屋!