我有一个带有一些id的表,我想在default.aspx中打开一个带有表单的某个page.aspx,具体取决于id。
我现在拥有的是:
if(id_table ==1) {
response.redirect("PageBla.aspx");
}
if(id_table==2) {
response.redirect("Page21231.aspx");
}
if(id_table==6) {
....
}
etc etc....
如果我要检查少量的ID,这很简单。但我会检查几十个ID。没有任何编程模式或任何其他方法,没有几十个ifs或switchs / Cases?
提前致谢
编辑:“=”被替换为“==”。
答案 0 :(得分:5)
只需创建一个简单的URL数组,如下所示:
string[] urls = {"PageBla.aspx", "Page21231.aspx"};
response.redirect(urls[id_table]);
如果您有更复杂的用例,另一个选项是使用Convention over configuration。 你可以这样做:
您的重定向代码将简单如下:
Response.Redirect(tableId + ".asxp");
答案 1 :(得分:5)
包含ID和URL的查找很容易。它可以在数据库中提供灵活性,但您现在也可以将它们放入字典中,如果您发现需要它,可以稍后添加数据库部分。
您可以将查询声明为字段:
private static readonly Dictionary<int, string> redirectLookup = new Dictionary<int,string> {
{1, "PageBla.aspx"},
{2, "Page21231.aspx"},
// .....
{6, "somepage6.apx"}
};
在您的重定向逻辑中:
string redirect;
if (redirectLookup.TryGetValue(id_table, out redirect))
Response.Redirect(redirect);
else
// some default action when that ID was not mapped.
答案 2 :(得分:3)
使用Dictionary<K,V>
,或多或少使用伪代码:
var dic = new Dictionary<int, string> { {1, "PageBla.aspx"}, {2, "Page21231.aspx"}..}
在代码之后:
response.redirect(dic[id_table]);
答案 3 :(得分:1)
答案 4 :(得分:1)
在字典中保留链接:
Dictionary<int, string> links =
new Dictionary<int, string>()
{
{ 1, "One.aspx" },
{ 2, "Two.aspx" },
{ 3, "Three.aspx" }
};
并使用类似的:
Response.Redirect(links[id_table]);
答案 5 :(得分:0)
另一种选择是将页面存储在表格中,选择要重定向到的页面。