我经常在我的asp.net应用程序的代码隐藏部分编写客户端代码。我想是时候回顾一下如何在服务器端页面编写客户端代码了。
我需要用“双引号”和“单引号”刷新mysel。不确定是什么叫做,但是有人能指出我正确的资源,我可以在那里了解报价和双引号。
答案 0 :(得分:5)
在服务器上编写旨在在客户端上运行的javascript代码就是简单地说:坏,错,要避免。
您应该更喜欢在单独的js文件中编写javascript函数,并且只能从服务器调用它们。这样做的好处是你不再需要担心单引号,双引号和三引号,你的js将被缓存,缩小,压缩,从CDN提供,优化,...混合服务器端语言的最终结果因为使用javascript的C#/ VB.NET只是丑陋且难以维护代码。
现在到了这一点。当你需要从服务器调用一些javascript函数,你需要传递一些参数,以免担心引号和东西,我建议你JSON序列化你的服务器端对象并将其传递给客户端函数。
我们举一个例子。假设您编写了一个需要一些参数的函数:
function foo(myModel) {
alert(myModel.Prop1 + ' | ' + myModel.Prop2);
}
现在你想从服务器调用这个函数,这里是如何继续:
var model = new
{
Prop1 = @"some value that can contain ', \, "", anything you like to throw it in, etc..",
Prop2 = "some other value"
};
var json = new JavaScriptSerializer().Serialize(model);
var script = string.Format("foo({0});", json);
ClientScript.RegisterStartupScript(GetType(), "foo", script, true);
现在您不再需要担心任何报价和转义。无论你在这些属性中抛出什么值,它们都会在调用javascript函数时被正确序列化。