Hier ist ein vereinfachtes Beispiel dessen, was ich erreichen möchte;Setzen eines Kontrollkästchens mit <% # isChecked%> Ausdruck
<asp:CheckBox runat="server" Checked="<%# this.isChecked %>" id="myCheckBox" />
Dann in meinem Code hinter;
public partial class _Default : System.Web.UI.Page
{
bool _isChecked = true;
public string isChecked
{
get
{
return _isChecked.ToString();
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
Ich bin mir bewusst, dass in diesem Fall kann ich einfach verwenden myCheckBox.Checked = true, aber ich bin nur mit diesem Beispiel zur Illustration. Die echte Kontrolle ist eine benutzerdefinierte, aber ich habe kein Glück, diesen Ansatz zu funktionieren. Es scheint nur den Wert zu ignorieren, den ich anbiete.
Ist es zulässig, <% # this.isChecked%> auf diese Weise zu verwenden?
EDIT:
Sorry, ich schrieb dies in Eile und erkennen, dass es nicht wirklich klar ist, dass ich „Checkbox“ soll nur ein Beispiel sein. Ich versuche nur, ein serverseitiges Bool in ein bestimmtes Attribut des ASP-Steuerelements zu bekommen, nicht unbedingt das "checked" -Attribut des Checkbox-Steuerelements.
EDIT 2: Aktualisiert meinem Beispiel String-Eigenschaft zu verwenden, anstatt boolean Feld, aber es meldet den folgenden Fehler in meiner ASPX-Datei jetzt;
Kann nicht Typ 'string' auf 'Bool'
Dies ist, was ich anfangs getan hatte, aber weil das Steuerelement Rendern bevor Page_Load für die übergeordnete Seite ausgeführt wird, wird das Attribut zu spät festgelegt, und das Steuerelement wird entsprechend dem Standardwert des Attributs statt der eine Einstellung in Page_Load. –
Das Steuerelement sollte zu diesem Zeitpunkt noch nicht vollständig gerendert werden. Haben Sie jedoch versucht, die Page_load des Steuerelements zu bearbeiten? Oder mit Page_PreInit? – cjk
'Checked' ist in diesem Fall eine boolesche Eigenschaft auf einem Server-Steuerelement, kein HTML-Attribut. Das Rendering wird von der Serversteuerung übernommen. –