通过名称值对收集到JavaScript:
在我的十字军东征对行代码,我努力在我的当前项目的清理脚本地狱。我的JavaScript充斥着这些类型的报表:
{S0的}
部分清理,以尽量减少页面上的脚本,而不是使用一个单独的js文件。这将鼓励我写在ID和资源作为参数的静态功能,允许脚本调试更加容易,并删除所有行的代码,使维修或未来重构更容易。
虽然移动到一个适当的。js文件的代码是好的,有次,我们可能会错过在网上善良。别害怕,我们可以建立一个JavaScript对象,它包含什么,我们可能需要轻松的属性。这相当于传递到JavaScript代码隐藏的名称/值对集合。采取看看这个例子:ScriptOptions options = new ScriptOptions();
options.Add("ok", GetResourceString("btnOK"));
options.Add("oksave", GetResourceString("btnOkSave"));
options.Add("cancel", GetResourceString("btnCancel"));
options.Add("viewTitle", GetResourceString("lblAddressEditorView"));
options.Add("editTitle", GetResourceString("lblAddressEditorEdit"));
options.Add("createTitle", GetResourceString("lblAddressEditorCreate"));
options.RegisterOptionsScript(this, "_OptionsAddressEditorResources");
在这里我们使用ScriptOptions的类创建一个对象称为_OptionsAddressEditorResources,我们可以在我们的脚本访问。现在让我们来看看在使用这些选项:{C}
上面我们看到的jQuery对话框使用_OptionsAddressEditorResources对象内包含的资源。
这似乎简单,但非常强大。下面是ScriptOptions类,它只是扩展字典,并写出脚本创建一个名为全局对象。祝你好运清理您脚本地狱。希望这将有助于。/// <span class="code-SummaryComment"><summary>
</span>/// Class for generating javascript option arrays
/// <span class="code-SummaryComment"></summary>
</span>public class ScriptOptions : Dictionary<string, string>
{
/// <span class="code-SummaryComment"><summary>
</span> /// Adds the control id to the options script
/// <span class="code-SummaryComment"></summary>
</span> /// <span class="code-SummaryComment"><param name="control">The control.</param>
</span> public void AddControlId(WebControl control)
{
this.Add(control.ID, control.ClientID);
}
/// <span class="code-SummaryComment"><summary>
</span> /// Registers all the key/values as an options script for access in the client.
/// <span class="code-SummaryComment"></summary>
</span> /// <span class="code-SummaryComment"><param name="page">The page</param>
</span> /// <span class="code-SummaryComment"><param name="optionsName">Name of the options object</param>
</span> public void RegisterOptionsScript(Page page, string optionsName)
{
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), optionsName))
{
StringBuilder script = new StringBuilder(
string.Format("var {0} = new Object();", optionsName));
this.Keys.ToList().ForEach(key => script.Append(
string.Format("{0}.{1}='{2}';", optionsName, key, this[key])));
page.ClientScript.RegisterStartupScript(page.GetType(),
optionsName, script.ToString(), true);
}
}
}