您好我在我的代码隐藏文件
中生成一个DropDownList protected DropDownList CountryList()
{
DropDownList ddl = new DropDownList();
XDocument xmlDoc = XDocument.Load(Server.MapPath("Countries.xml"));
var countries = from country in xmlDoc.Descendants("Country")
select new
{
Name = country.Element("name").Value,
};
foreach (var c in countries)
{
ddl.Items.Add(c.Name);
}
return ddl;
}
我曾经梦想过<%= CountryList()%>在我的aspx页面上。但是当我这样做时,它会输出字符串 - “System.Web.UI.WebControls.DropDownList”。
我可以这样做,或者我必须设置ContentPlaceHolder,然后将DropDownList添加到内容中吗?
干杯
答案 0 :(得分:3)
<%= %>
只是Response.Write方法的简写,您应该add the controls programatically
或者只是在您想要的地方添加一个asp:DropDownList标记,然后在后面的代码中,您可以使用DataSource属性和DataBind()方法将数据直接从Linq绑定到XML查询。 p>
例如:
在您的.aspx文件中:
<asp:DropDownList ID="CountryListDropDown" runat="server">
</asp:DropDownList>
在代码隐藏的Page_Load:
上CountryListDropDown.DataSource = countries; // your query
CountryListDropDown.DataBind();
由于您的查询只有一个选定字段,因此您不必指定DataValueField和DataTextField值。
答案 1 :(得分:2)
DropDownList ddl = new DropDownList();
ddl.ID = "test";
form1.Controls.Add(ddl); //your formID
答案 2 :(得分:1)
ASP.NET页面预处理<%=...%>
标记表示<% Response.Write(...) %>
因此你的方法不会起作用,你需要一个ContentPlaceHolder,Panel,PlaceHolder或其他命名容器来将DropDownList添加到。
此外,如果您希望页面回发等也能正常运行,您将需要在Page Init事件上创建(并可能填充)DDL并为其提供ID,否则您可能最终会出现视图状态不一致的情况。
答案 3 :(得分:1)
在aspx页面中像普通的一样声明DropDownList,然后在Page_Load()或你正在进行数据绑定的任何地方添加项目。