【发布时间】:2013-04-12 03:07:00
【问题描述】:
ASP.NET 允许使用服务器标签(razor 或 ASPX)动态生成 HTML。但是除了使用内联(嵌入式)CSS / Javascript之外,有没有什么好的方法可以以相同的方式生成 *.js 或 *.css 内容。如今,随着 Ajax 等技术的出现,越来越多的逻辑在 Javascript 中从服务器端转移到客户端。如果有机会使用 ASP.NET 为 HTML 生成提供的所有灵活性来动态生成 JS,那就太好了。
例如,我的 Javascript 包含 Knockout 视图模型声明,其中包含在 Javascript 渲染期间从服务器加载的初始数据,以及一些额外的 js 函数,所以在我的 Html 中而不是嵌入式脚本 em> 我想要这样的脚本引用:
<script src="~/Scripts/ContactViewModel.js?contactId=@Model.ContactId"></script>
另一个例子,开发者可能需要它是使用基于用户配置文件的 CSS。用户配置文件信息包含在 CSS 生成期间必须遵守的样式信息(字体、颜色,而不仅仅是主题),所以在我看来,我会有类似的内容:
<link href="~/Styles/CurrentUserOverrides.css" rel="stylesheet" />
CurrentUserOverrides.css 将根据认证用户的个人资料数据动态生成。
如何使用 ASP.NET MVC 做到这一点?我想找到一个解决方案,让我能够像使用 ASP.NET 创建动态 HTML 一样简单,同时具备正常工作的智能以及 VS 为 ASP.NET 视图提供的所有其他功能。
【问题讨论】:
-
我不确定我是否了解您想要完成的工作的好处。为什么要为特定页面生成上下文敏感的 Javascript?
-
您是否尝试使用 ContactViewModel.js 中的contactId(并且 123 的 ContactId 实际上是由您的视图模型呈现的)?
-
是的,ContactViewModel.js 需要用指定的 ContactId 从数据库中加载字段值来声明对象
标签: javascript asp.net css asp.net-mvc razor