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