0

明らかに、フロントエンド開発には素晴らしいので、web.configで clientIDMode="Static" を使用したいと思います。

しかし、リピーター、データグリッド、およびデータリストをデフォルトで clientIDMode="Predictable" に設定して、ページに重複する ID がないようにしたいと考えています。リピーターを作成するたびにこれを設定する必要はありません。これは余分なコードであり、忘れてもすぐに問題が発生しないため、間違いに気づかずに続行する可能性があります。

この問題に関するヘルプをいただければ幸いです。

4

1 に答える 1

1

いいえ、残念ながらそのようなものは存在しません。

あなたにとって本当に重要な場合は、マスターまたはページで次を実装できますPage_Init

protected void Page_Init(object sender, EventArgs e)
{
    var types = new Type[] { 
        typeof(Repeater), typeof(DataGrid), typeof(GridView), 
        typeof(DataList), typeof(ListView), typeof(FormView) 
    };
    var allControls = new List<Control>();
    FindChildControlsRecursive(Page, types, allControls);
    foreach (var ctrl in allControls)
    {
        ctrl.ClientIDMode = ClientIDMode.Predictable;
    }
}

public void FindChildControlsRecursive(Control control, IList<Type> types, IList<Control> result)
{
    foreach (Control childControl in control.Controls)
    {
        var controlType = childControl.GetType();
        if (typeof(Control).IsAssignableFrom(controlType) && types.Contains(controlType))
        {
            result.Add((Control)childControl);
        }
        else
        {
            FindChildControlsRecursive(childControl, types, result);
        }
    }
}

しかし、私の意見では、これは思い出させるには多すぎる.

于 2012-04-18T20:30:29.723 に答える