【问题标题】:Can I use server-side Javascript to code views in Razor?我可以使用服务器端 Javascript 对 Razor 中的视图进行编码吗?
【发布时间】:2012-01-10 12:37:52
【问题描述】:

我最近与一位没有 C# 经验的前端开发人员合作,他将为我正在构建的 ASP.NET MVC3 应用程序编写视图。

由于大多数 Web 开发人员都知道 Javascript,因此我认为让他在 Razor 视图中使用 Javascript 而不是 C# 进行服务器端代码剪辑会很棒。我知道除了输出变量等之外,视图中没有太多代码,但是有一些基本的循环等。

我也非常喜欢让视图中的客户端和服务器端代码使用相同语言的想法。

我想做的事可能吗?这是 Node.js 的事情吗? (我根本没看过。)

【问题讨论】:

    标签: javascript asp.net asp.net-mvc node.js razor


    【解决方案1】:

    ASP.NET MVC 要求您使用 .NET 4.0。因此,您可以使用编译为 MSIL 的任何符合 CLS 的语言来构建服务器端。就 javascript 而言,好吧,JScript.NET 现在已经过时了,目前我不知道有替代方案。

    就 Razor 而言,解析器支持的唯一语言是 C# 和 VB.NET。如果您想使用其他语言,则必须为其构建解析器或使用替代视图引擎。

    【讨论】:

    • Razor 是否支持非 C# 语言?我想使用 js 编写视图,而不是控制器。
    • @DavidPfeffer,就观点而言,Razor 仅支持 C# 和 VB.NET。解析器仅对这两种语言提供内置支持。我认为您应该寻找替代视图引擎。但老实说,如果您使用 C# 编写服务器端代码,如果您决定使用 Razor 作为视图引擎,那么不使用 C# 会很奇怪。
    • 我们的目标是让不懂 C# 的视图开发人员感到舒适。雇用有 js 和 HTML 经验的人比 C# 和 HTML 经验容易得多。
    • @DavidPfeffer,你不能用 Razor 做到这一点。
    【解决方案2】:

    您可能对此感兴趣:一个 javascript 视图引擎。让它与某种 JS 模板引擎一起工作并不需要太多工作

    https://github.com/mcintyre321/JsViewEngine

    【讨论】:

      【解决方案3】:

      我怀疑一个体面的 Javascript 程序员在掌握编写视图所需的 C#/VB.Net 的一小部分时会遇到很多麻烦。

      但是,一种可能的仅 JS 替代方案是让您的视图仅输出 JS 和可能的基本 HTML 布局,然后使用 ajax 调用控制器操作以获取数据并仅使用 JS 动态构建视图的 HTML。对我来说,这似乎是一种过于复杂的方法,但如果您的 UI 开发人员无法掌握一些简单的 C# 编程技能,那么这可能是一个解决方案。

      【讨论】:

        【解决方案4】:

        我用过:https://github.com/pauldotknopf/JavaScriptViewEngine,现在还在更新。

        这样,您可以为 Razor 视图(服务器端 c# -- Razor ViewEngine)设置 Javascript 视图(服务器端 js -- JS ViewEngine)的替代方案。你也可以将它用于 React 和/或 Javascript。

        我使用它,所以服务器端代码 + 前端代码是相同的 ;)

        【讨论】:

          【解决方案5】:

          您可以在 Razor 页面上使用 javascript 和 html。您甚至可以将两者结合起来:例如

          <script>
               $(document).ready(function() {
                 var note = {
                    workflow: @Html.Raw(Json.Encode(Model))
                 };
                 // do something with note
              });
          </script>
          

          但是,如果您只打算这样做,Razor 可能就大材小用了。 Razor 不仅能够执行简单的循环,而且学习起来应该不难。您是否已经为您的朋友构建了视图模型?

          当然,一些 javascript 开发会完全绕过视图模型。相反,ajax 调用用于检索模型数据,其状态在客户端维护(例如,骨干网鼓励这种方法)。

          【讨论】:

          • 这甚至不能远程回答 js 是否可以用作 Razor 页面的服务器端语言的问题。
          • Razor 不是一种语言,它是一个视图引擎。
          • Razor 是一个视图引擎:你是对的。提问者提到开发人员希望在 Razor 视图中使用 javascript 进行服务器端代码剪辑。此代码是我们如何做到这一点的示例(在实际项目中)。您仍然必须了解一点 Razor,但您可以将两者结合起来(在一定程度上)。我认为这值得指出。
          • “提问者”是我。您所做的是使用服务器端模型(作为 JSON 发送)的客户端 js,这根本不是所要求的。请注意,问题清楚地说明了我想如何使用服务器端 js 而不是 C#。
          • 啊哈。我想我不确定您将服务器端和客户端 js 组合在一个视图中是什么意思。 Darin Dimitrov 在这个问题上的回答更中肯。我的回答是遵循 K. Bob 的建议的一些代码。我们有一位开发人员更擅长 javascript,而不是 C#,这就是我们使用的方法。
          猜你喜欢
          • 1970-01-01
          • 2020-07-04
          • 2020-08-29
          • 2012-09-14
          • 2011-07-26
          • 2017-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多