2009-12-18 18 views
2

想知道如何避免Querystrings中的Magic Strings吗?我有很多代码,如Magic QueryStrings - 要避免的好模式?

if (string.IsNullOrEmpty(request.Form["projectId"]) || 
    !int.TryParse(request.Form["projectId"],out projectId)) 
    return null; 

自然,我必须硬编码projectId在调用页面。

一种方法是让静态/常量“Dictionary”类定义一个“QueryStringCreateProjectProjectId”标识符的加载,但必须将JavaScript文件更改为服务器端生成的。

现在,我意识到可能没有完美的解决方案,因为抽象只能达到一定程度,并且在某些时候我必须输入字符串并希望我从不犯错,但是我想知道什么解决方案是?

制作此CW是因为这是边界民意调查/主观,但我相信它属于SO。

回答

4

对于常见的请求参数,我创建了一个知道所有“魔术”名称(字符串常量)的类,以创建指向网站中各个页面的链接。我设置了一些属性,并且该类使用正确的URL发出<a>标记。我的链接都没有硬编码 - 所有的内部URL都是使用这个类构建的。

另一个类使用相同的一组常量字符串名称来读取请求上的查询字符串。当我收到一个请求时,我用这个类创建了一个对象,然后我的页面可以从这个对象中读取必要的值(同样,不需要知道魔术字符串)。

该网站的每个区域都有自己的一组“魔术”名称,它们可以向链接添加参数(使用同一链接生成器类中的方法),然后从查询字符串中读取它们通常的方式。这些也应该使用常量,以避免错别字。