转换为使用不显眼的 JavaScript

Converting To Using Unobtrusive JavaScript

提问人:Jammer 提问时间:4/24/2013 更新时间:4/24/2013 访问量:106

问:

我渴望了解如何在当前的 MVC 项目上更好地构建我的 JavaScript 工作,我想知道是否有人能够从我的应用程序中的场景中为我说明一个具体的例子。

虽然我有很多桌面开发经验和相当多的 Web 开发经验,但相比之下,我只涉足过 JavaScript,并且觉得我在理解和熟练程度方面都有很大的改进空间。特别是围绕如何充分利用 W3C DOM 标准。

我的网站上有一个简单的表单,它将一些字符串数据、布尔值和日期发布到一个操作方法中,该方法的签名是:

MVC 控制器签名

    [HttpPost, ValidateAntiForgeryToken]
    public void PostNewEntry(string text, string localUsersDateTime, bool isPublic)

我将以下内容定义为表单html属性的一部分:

内联 JavaScript 函数调用

new { @name = "createentry", @onsubmit = "setLocalDateTime(this.localUsersDateTime);" }

localUsersDateTime 是表单上的一个隐藏输入元素,在提交表单时,该元素执行一个小的 JavaScript 函数(存储在单独的 .js 文件中,而不是内联),该函数利用 moment.js 在将表单数据发送回网站之前设置用户的本地日期和时间。setLocalDateTime 函数如下所示:

JavaScript 函数 (MyScripts.js)

function setLocalDateTime(obj) {
    obj.value = moment().format("YYYY-MM-DD HH:mm:ss");
}

关于这种情况,我真的有两个问题:

如何将其转换为真正不显眼的 JavaScript?

如何在没有任何 Javascript 的情况下实际优雅地降级并仍然让用户获得本地日期时间?

我注意到,在像 Facebook 这样的网站上,如果您关闭 JavaScript,则根本不会提供相当数量的网站(聊天、新闻源更新),而在我的情况下,不让用户本地日期时间根本不是一种选择。这对于在我的网站上正确操作这种特殊情况至关重要。

javascript asp.net asp.net-mvc-4 unobtrusive-javascript

评论

0赞 Rick Viscomi 4/24/2013
优雅的降级和不显眼的 JavaScript 是两种非常重要但截然不同的技术。也许将第二部分分成自己的问题?
0赞 Jammer 4/24/2013
这是真的,它们非常不同,但如果将它们放在特定场景的完整示例中,这将对我和其他人有所帮助,谢谢 Rick。

答: 暂无答案