Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net HtmlSelect vs DropDownList_Asp.net - Fatal编程技术网

Asp.net HtmlSelect vs DropDownList

Asp.net HtmlSelect vs DropDownList,asp.net,Asp.net,在HtmlSelect和DropDownList之间,哪一个性能更好(初始化和渲染速度更快)?什么时候使用哪个有什么指导原则吗 另一个问题是,如果我想从JScript访问select控件的值,我是否只能使用HtmlSelect(因为ID不会更改),或者是否有任何方法强制DropDownList使用我的ID而不是像“ctl00\u MainContainerContentPlaceHolder\u Day1DropDownList”这样的ID?我认为您无法停止控件的名称生成。框架将基于内容占位符生

在HtmlSelect和DropDownList之间,哪一个性能更好(初始化和渲染速度更快)?什么时候使用哪个有什么指导原则吗


另一个问题是,如果我想从JScript访问select控件的值,我是否只能使用HtmlSelect(因为ID不会更改),或者是否有任何方法强制DropDownList使用我的ID而不是像“ctl00\u MainContainerContentPlaceHolder\u Day1DropDownList”这样的ID?

我认为您无法停止控件的名称生成。框架将基于内容占位符生成一个ID,以确保每个控件都可以通过唯一的ID访问。 您可以通过使用在代码隐藏中访问此ID

DropDownList.ClientID


我认为你无法阻止控件名称的生成。框架将基于内容占位符生成一个ID,以确保每个控件都可以通过唯一的ID访问。 您可以通过使用在代码隐藏中访问此ID

DropDownList.ClientID


函数显示()
{
警报($('').value);
}

这可能有用。即使重新排列容器,也不必担心框架生成的id。


函数显示()
{
警报($('').value);
}


这可能有用。您不必担心框架生成的id,即使您重新排列了容器。

由于没有人解决这个问题的性能方面,我想我会尝试一下。我最初的假设是,这两个选项中的任何一个都将获得相似的性能,因为它们产生几乎相同的呈现HTML。然而,我将下面的.aspx页面放在一起测试我的理论

public enum ListType
{
    DropDownList,
    HtmlList
}

public partial class ListControlRenderTimeComparison : System.Web.UI.Page
{
    private Dictionary<ListType, Action<Int32>> _listMap = new Dictionary<ListType, Action<Int32>>();

    protected void Page_Load(object sender, EventArgs e)
    {
        InitializeListMap();

        for (int i = 0; i < ControlsToRender; i++)
        {
            _listMap[ListToRender](NumberOfItems);
        }
    }

    private void InitializeListMap()
    {
        _listMap.Add(ListType.DropDownList, AddDropDownList);
        _listMap.Add(ListType.HtmlList, AddHtmlList);
    }

    private void AddDropDownList(Int32 controlsToAdd)
    {
        var ddl = new DropDownList();

        for (int i = 0; i < controlsToAdd; i++)
            ddl.Items.Add((i + 1).ToString());

        form1.Controls.Add(ddl);
    }

    private void AddHtmlList(Int32 controlsToAdd)
    {
        var ddl = new HtmlSelect();

        for (int i = 0; i < controlsToAdd; i++)
            ddl.Items.Add((i + 1).ToString());

        form1.Controls.Add(ddl);
    }

    private Int32 NumberOfItems
    {
        get
        {
            Int32 timesToRender;

            return Int32.TryParse(Request.QueryString["numItems"], out timesToRender) ? timesToRender : 1;
        }
    }

    private Int32 ControlsToRender
    {
        get
        {
            Int32 timesToRender;

            return Int32.TryParse(Request.QueryString["numControls"], out timesToRender) ? timesToRender : 1;
        }
    }

    private ListType ListToRender
    {
        get
        {
            String listType = Request.QueryString["listType"];

            if (String.IsNullOrEmpty(listType)) return ListType.DropDownList;

            return (ListType)Enum.Parse(typeof (ListType), listType, true);
        }
    }
}
如果您这样做,那么就很容易绑定到客户机事件(onclick、onmouseover、onmouseout等),以便在许多地方重用您的行为

干杯,
Josh

既然没有人解决这个问题的性能方面,我想我会试一试。我最初的假设是,这两个选项中的任何一个都将获得相似的性能,因为它们产生几乎相同的呈现HTML。然而,我将下面的.aspx页面放在一起测试我的理论

public enum ListType
{
    DropDownList,
    HtmlList
}

public partial class ListControlRenderTimeComparison : System.Web.UI.Page
{
    private Dictionary<ListType, Action<Int32>> _listMap = new Dictionary<ListType, Action<Int32>>();

    protected void Page_Load(object sender, EventArgs e)
    {
        InitializeListMap();

        for (int i = 0; i < ControlsToRender; i++)
        {
            _listMap[ListToRender](NumberOfItems);
        }
    }

    private void InitializeListMap()
    {
        _listMap.Add(ListType.DropDownList, AddDropDownList);
        _listMap.Add(ListType.HtmlList, AddHtmlList);
    }

    private void AddDropDownList(Int32 controlsToAdd)
    {
        var ddl = new DropDownList();

        for (int i = 0; i < controlsToAdd; i++)
            ddl.Items.Add((i + 1).ToString());

        form1.Controls.Add(ddl);
    }

    private void AddHtmlList(Int32 controlsToAdd)
    {
        var ddl = new HtmlSelect();

        for (int i = 0; i < controlsToAdd; i++)
            ddl.Items.Add((i + 1).ToString());

        form1.Controls.Add(ddl);
    }

    private Int32 NumberOfItems
    {
        get
        {
            Int32 timesToRender;

            return Int32.TryParse(Request.QueryString["numItems"], out timesToRender) ? timesToRender : 1;
        }
    }

    private Int32 ControlsToRender
    {
        get
        {
            Int32 timesToRender;

            return Int32.TryParse(Request.QueryString["numControls"], out timesToRender) ? timesToRender : 1;
        }
    }

    private ListType ListToRender
    {
        get
        {
            String listType = Request.QueryString["listType"];

            if (String.IsNullOrEmpty(listType)) return ListType.DropDownList;

            return (ListType)Enum.Parse(typeof (ListType), listType, true);
        }
    }
}
如果您这样做,那么就很容易绑定到客户机事件(onclick、onmouseover、onmouseout等),以便在许多地方重用您的行为

干杯,
Josh

查看这个问题的答案。看看这个问题的答案。
function doStuff(strId)
{
    document.getElementById(strId); //Straight up, no lime
    $get(strId); // Asp.Net Ajax Client Side Framework
    $(strId); // JQuery
}