我试图重构,其中包括2个MVC项目的解决方案:一个“用户体验”项目,并RouteValueDictionary在C#库项目中支持HTML扩展助手?
我已成立了一个独立的C#库对应的“内容管理系统项目” - “服务” - 项目在同一个解决方案空间中做许多事情。我想将这两个Web项目使用的Html扩展方法放在这个“中立”项目中,以便两个MVC项目之间不存在依赖关系。
我在使用这个类库中的RouteValueDictionary对象(to.MergeAttributes)时遇到了问题。我在Services项目中包含了对Sytem.Web.Routing的引用,但是当我尝试在助手类文件的顶部包含using语句时,VStudio拒绝识别该声明(“Can not resolve symbol'Routing' “)。
这很直观 - 只有一个可以参与URL路由的web项目需要一个RouteValueDictionary。
但现在看来,通常使用的HtmlHelper类里面的RouteValueDictionary对象,因为它可以采取由名称 - 值对的匿名对象并将其转换为一个字典在它的构造是这样的:
tag.MergeAttributes(new RouteValueDictionary(htmlAttributes));
.. 。因此通过提供在任何数量的标签属性名称 - 值对成标签和相对简单的语法调用视图助手的方法:
<%:Html.SomeTag(Model.Id, new {@class = "myClass", title = "myTitle"} %>
所以,如果我不能在使用RouteValueDictionary我的帮手类,我是f orced与我的观点更繁琐的语法,就像这样:
<%:Html.SomeTag(Model.Id, new Dictionary<string, string>{ {"class", "myClass"}, {"title", "myTitle} }%>
问:那么,有没有办法重新写助手类,以获得更简单的视图语法,而不使用RouteValueDictionary,或者是有办法允许在C#库项目中使用RouteValueDictionary?
.NET Framework 4 – Faust
...并且这个项目中使用的其他MVC类(如TagBuilder)没有问题。嗯... – Faust
啊,自从你将它标记为asp.net-mvc-2,因为它是.NET 3.5上的MVC2,我想到了。 –