返回首页

通过名称值对收集到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);

        }

    }

}

回答

评论会员: 时间:2
R