0
我想根據XML用戶控件添加到我的網頁:獲取和LoadControl(字符串路徑)在C#中設置的參數
<?xml version="1.0" encoding="utf-8" ?>
<Fields>
<Group name="Main" text="Innhold">
<Field type="TextBox" name="Name" text="Navn"></Field>
</Group>
</Fields>
用戶控件看起來像這樣TextBox.ascx:
<div class="fieldWrapper">
<asp:Label runat="server"><%=Label %></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" />
</div>
我根據xml中的type屬性做一個LoadControl。像:LoadControl(類型+ 「的.ascx」):
var fields = from x in element.Elements("Field") select new
{
type = x.Attribute("type").Value,
name = x.Attribute("name").Value,
text = x.Attribute("text").Value,
};
foreach (var field in fields)
{
var control = LoadControl("~/UserControls/FieldControls/" + field.type + ".ascx");
pnl.Controls.Add(control);
}
FieldsHolder.Controls.Add(pnl);
我想從XML文本屬性傳遞給在TextBox.ascx標籤。 像這樣:ctrl.Label = field.text 我知道如果我把控制轉換爲正確的類型我可以做到這一點,但我不知道類型。 我可以用這種方式反射嗎?
我試過這個,但我仍然無法達到Label屬性。與labelproperty創建了一個接口。在TextBox.ascx中實現了接口。寫控制加載「作爲IFieldControl」。 (作爲IFieldControl的控件).Label給出「無法解析符號'標籤'」 – espvar
編譯是否正確?請注意'IFieldControl'已經是.NET 4.0框架的一部分。請確保您使用的是正確的IFieldControl名稱空間。我會建議將接口重命名爲IuserControl,然後重試。 – Tariqulazam
我只是想到。我改了名字,瞧。有用。 Thang你! – espvar