我正在寻找一个新的Web开发项目,客户有两个大规格,第一个是他们希望在.NET中开发,第二个是他们希望能够改变页面的外观和感觉而无需重新编译代码。虽然我是ASP.NET的新手,但我熟悉模型视图控制器的概念,ASP.NET MVC是否允许客户避免一起编译或避免编译业务逻辑?有什么好的书或资源可以推荐,以便我可以了解更多?这个项目还在项目的早期阶段,我不是那个和客户谈论这个问题的人,但是我会成为一名正在做这项工作的人,我对这种可能性感到很好奇。如何在不重新编译代码的情况下更改ASP.NET页面的外观?
回答
如果您熟悉MVC,我会考虑ASP.NET MVC。不过,您也可以使用自ASP.NET 2.0以来已有的大量内置功能,例如MasterPages来控制模板和主题以控制和切换页面布局,配色方案等。两者都可以使用最终会改变的CSS代码的外观。即使是标准的ASP.NET Web表单控件也包含一个CssClass属性,可以设置和使用它来格式化Web表单控件。
这是一本关于ASP.NET MVC 1.0入门的好书。
http://weblogs.asp.net/scottgu/archive/2009/03/10/free-asp-net-mvc-ebook-tutorial.aspx
可能改变网页不改变代码的外观的最好的办法是via the style sheet。那就是Here's one of the best examples。
如果您在视图中更改HTML,即使您向其中添加代码(只要它在视图外使用的任何内容已存在于编译后的代码中),也无需每次重新编译它, 。
另一方面,如果你只是改变颜色和布局等东西,那么所有这些都可以在CSS中完成,而这甚至不需要在项目中。
设计页面,以便您可以轻松地将样式应用于页面的不同部分。通过将页面区域分成'div'区域,然后给这些div类名称和id。一旦你有了这个地方,你可以在CSS中编写样式表并将它们应用到页面中。许多网站提供的一件事是能够将主题应用到网站。主题只是相关样式表和图像的集合,为网站提供了特定的外观。将每个主题放在一个单独的目录中,然后可以通过更改从其加载的目录来更改外观。
准备好学习(和CSS一起战斗),这是一种黑色艺术。
不要使用表元素,除非你真的有一个表
正如所提到的,CSS样式表是改变web应用程序的外观没有任何重新编译,并csszengarden是如何你一个梦幻般的例子的最佳方式可以改变一个网页这么多。
但是,您也只想为表格数据使用表格,而不是布局组件。
我倾向于使用元素来将标签放置到表单元素,例如文本框。
您还需要在div上设置id属性,跨越表单元素以便更改这些元素。可以根据元素类型和之前的内容进行更改,但是我发现能够告诉它更改footerdiv更安全,无论应用程序中还有哪些更改,因为html可能会更改,div可能已经改变为一个跨度,然后我在CSS文件中的假设是错误的,他们的html变化导致了CSS的变化,毫无必要。但是,正如凯文琼斯提到的那样,你需要首先与CSS作战,因为没有表格的布局需要更多的思考如何让CSS做你想做的事情。
CSS可以明确地帮助很多这里。另一个好的诀窍是动态交换母版页 - 实际上并不难,只需在PreInit事件期间在页面中设置MasterPageFile属性即可。
就动态切换的主设备而言,您可以让它们实现一个通用接口或从一个公共基类下降,并让页面引用该接口。
如何使用主题(WebForms)并动态更改它们?
This入门套件有一个简单的例子
你也可以使用jQuery从类特定CSS属性的动态更改样式表的设置。 (这也适用于ASP .NET MVC和WebForms)
- 1. 如何在不重新编译FLA的情况下更新SWF
- 2. 在不重新加载页面的情况下更改URL
- 3. 如何在不更改URL的情况下重定向页面?
- 4. 如何在不重置篡改密码的情况下重新加载页面?
- 5. JModelica:在不重新编译的情况下更改循环迭代变量
- 6. 如何在不重新加载页面的情况下更改网址?
- 7. 如何在不重新加载页面的情况下更改网址?
- 8. GitHub如何在不重新加载页面的情况下更改URL?
- 9. 如何在不创建页面重新加载的情况下更改Firefox window.location.hash?
- 10. 如何在不刷新页面的情况下更改页面URL?
- 11. 如何在不刷新的情况下更新页面
- 12. 在不重新编译的情况下更改java的.class文件
- 13. 是否可以在不重新编译的情况下更改exe的图标?
- 14. 在不刷新页面的情况下更改内容大小?
- 15. 在不更改外观的情况下禁用组合框
- 16. 在不重新编译的情况下更改程序集清单
- 17. 如何在不编译代码的情况下修改全局资源DLL?
- 18. 如何在不更改源代码的情况下禁用TLSv1?
- 19. 如何在不刷新页面的情况下反映视图中的更改?
- 20. 如何在不重新加载网页的情况下更改div的内容?
- 21. 在不重新加载页面的情况下更改列表内容
- 22. Laravel:在不重新加载页面的情况下更改内容
- 23. 如何在不刷新MVC模型的情况下更改页面语言?
- 24. 如何在不使用PEAR :: DB的情况下重新编写此代码?
- 25. 如何在不重写URL的情况下重定向页面?
- 26. 如何在不更改数据的情况下更改表格编码?
- 27. Scala代码在不使用scalac编译的情况下运行?
- 28. 在不重新编译JavaFX 2项目的情况下更新CSS样式表
- 29. 在不刷新页面的情况下更新会话变量
- 30. 如何在不改变算法代码的情况下直观显示算法?
您是否认为客户端会很乐意在样式表中编辑样式?也许更多地展开他们对改变外观和感觉的期望。 – davewasthere 2009-08-28 13:08:35