繁体   English   中英

当逻辑需要 C# 和 Javascript 实现时如何保持干燥?

[英]How to stay DRY when logic needs a C# and Javascript implementation?

我目前正在使用 ASP.NT MVC RC1 来实现一个基本的时间表应用程序。 我想遵循 DRY 原则,但在一种特殊情况下很难做到:

我的一个观点,实际上是部分观点,有许多文本框,代表在特定任务上花费的小时数,一周中每天一个文本框。 当我最初加载页面时,我希望视图中有一个文本框来显示所有这些小时的总数。 此外,我希望在更改文本框中的值时更新该总数。 对文本框的更新不会导致完整的回发,只有 AJAX 回发不会对结果做任何事情(回发会更新数据库上的值,但返回的 ActionResult 是 EmptyResult,因为我不需要在用户界面)。

目前我有 controller 创建一个视图,该视图填充了该视图的“总计”,因此添加所有值的逻辑在 C# controller 中。 在 UI 方面,我有 javascript 更新 UI 级别的总数。 但这不好,因为如果我改变计算总数的逻辑,我必须在两个地方改变它! 啊! 不干燥!

那么,我该怎么做呢? 到目前为止,我唯一的答案是废弃在 UI 上计算总数的 javascript 代码,而是让 AJAX 回发返回该视图的新“总数”。

还有其他方法吗?

您可以尝试Nikhil Kothari 的 Script# 项目 它是一个交叉编译器,可将 C# 编译并转换为独立于浏览器的 javascript,让您共享逻辑。 它被微软内部的许多团体正是为了这个目的而使用的。

更多,来自网站:

Script# 为 Ajax 和 JavaScript 开发带来生产力。 Script# 是一个免费工具,使开发人员能够创作 C# 源代码,然后将其编译为适用于所有现代浏览器的常规脚本,并在此过程中利用现有 .NET 工具以及 Visual Studio Z581D6381F701F35E4B36ZF7 的生产力和功能。 Script# 为您提供一种开发方法和方法,为您的 Ajax 应用程序、组件和框架带来软件工程、长期可维护性和可扩展的开发方法。

Script# 被 Microsoft 内部的开发人员广泛使用,在 Windows Live、Office 中构建 Ajax 体验,仅举几例,以及包括 Facebook 在内的外部开发人员和公司。 如果您正在构建基于 Ajax 的 RIA 应用程序,那么您应该立即尝试 Script#,看看它是否有助于改进您自己的 Ajax 开发!

在 C# 和 Javascript 中合计时间的逻辑在最严格的意义上不是 DRY,这是真的。 人们可能会因为它们是在两个不同环境中运行的两种不同语言这一事实而分心,但归根结底,如果您更改其中一种,则必须同时更改两者。

我认为这是形式和 function 之间的权衡。 拥有 javascript 有多重要? 如果 AJAX 调用太慢(确实有可能),那么这可能是时候意识到 DRY 原则是指导原则,而不是法律。

如果您希望代码在您的服务器和客户端上执行,您可以使用/编写表达式树到 JavaScript 编译器。

在服务器端,您评估表达式并将转换为 JavaScript 的相同表达式发送到客户端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM