Вы ищете:
if (typeof(mi) is MyType) { ... }
право?
Синтаксис = <% # ...%> - это синтаксис привязки данных , используемый для привязки значений для управления свойствами при вызове метода DataBind.
Вам необходимо для вызова DataBind - либо Page.DataBind для привязки всех элементов управления на странице, либо Label1.DataBind () для привязки только метки. Например, добавьте в обработчик события Page_Load следующее:
if (!IsPostBack)
{
this.DataBind();
// ... or Label1.DataBind() if you only want to databind the label
}
Использование Text = '<% = GetMyText ("LabelText")%>', как предлагали другие, не сработает, как вы узнаете. Этот синтаксис унаследован от классического ASP. В некоторых случаях он может использоваться в ASP.NET для вставки динамических значений в статический HTML, но не может использоваться для настройки свойств серверных элементов управления.
Системный синтаксис, который вы ищете, это <% = %>
#
предназначен для привязки данных. Итак, ваш код должен выглядеть так:
<asp:Label ID="Label1" runat="server" Text='<%= GetMyText("LabelText") %>' />
РЕДАКТИРОВАТЬ: Этот ответ неверен
Я оставляю этот ответ здесь, потому что многие люди согласились со мной, что это действительно правильный ответ, но он не сработает. Эта строка кода приведет к следующему выводу HTML:
<span id="Label1"><%= GetMyText("LabelText") %></span>
Попробуйте следующее:
<asp:Label ID="Label1" runat="server" Text='<%= GetMyText("LabelText") %>' />
Изменить
Ага. Я был неправ. @ Джо был прав.
Тем не менее, ЭТО работает (и я не уверен, в чем разница):
<asp:Label ID="Label1" runat="server"><%= GetMyText("LabelText") %></asp:Label>
CodeBehind:
protected string GetMyText(string input)
{
return "Hello " + HttpUtility.HtmlEncode(input);
}