我最近与一位没有C#经验的前端开发人员合作,他将编写我正在构建的ASP.NET MVC3应用程序的视图。由于大多数Web开发人员都了解Javascript,因此我认为让他在Razor视图中使用Javascript编写服务器端代码片段会很棒。我知道视图中除输出变量等之外并没有太多的代码,但是还有一些基本的循环等操作。我也非常喜欢在视图中同时使用客户端和服务器端代码相同的语言的想法。我想做的这个是否可行?这是Node.js的功能吗?(我完全没有看过它。)
我怀疑一个优秀的Javascript程序员在学习一些C# / VB.Net的小知识点以编写视图时不会遇到太多麻烦。
然而,一个可能的仅使用JS的替代方案是仅输出JS和基本的HTML布局,并使用ajax调用控制器操作来获取数据并使用JS动态构建视图的HTML。对我来说,这似乎是一个过于复杂的方法,但如果您的UI开发人员无法掌握一些简单的C#编程技能,那么这可能是一个解决方案。
<script>
$(document).ready(function() {
var note = {
workflow: @Html.Raw(Json.Encode(Model))
};
// do something with note
});
</script>
但是如果你只计划做简单的循环,Razor 可能有些过头了。Razor 能够轻松完成简单的循环,并且学习起来也不难。您已经在为您的朋友构建视图模型吗?
当然,一些 JavaScript 开发将完全绕过视图模型。取而代之的是使用 ajax 调用检索模型数据并在客户端上维护其状态(例如,backbone 鼓励采用这种方法)。