2012-02-18 5 views
1

Я пытаюсь получить доступ к переменной или свойству в файле .cs из файла .aspx, но не повезло. Я посмотрел на несколько потоков здесь и попробовал их все, но все равно не повезло. Вот сценарий; У меня есть GridView управление с текстовыми полями и RequiredFieldValidator в одном ряду:ASP.NET - Использовать переменную в .aspx странице

<asp:TemplateField HeaderText="User Name" ItemStyle-Width="10px"> 
    <ItemTemplate> 
     <asp:Label ID="lblWebLogin" runat="server" Text='<%#Eval("WebLogin") %>'></asp:Label> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:TextBox ID="txtWebLogin" runat="server" Text='<%#Eval("WebLogin") %>'></asp:TextBox> 
     <asp:RequiredFieldValidator ID="rfvEditWebLogin" runat="server" 
      ControlToValidate="txtWebLogin" Display="None" ErrorMessage='<%= this.LoginRequired %>'></asp:RequiredFieldValidator> 
    </EditItemTemplate> 
    <FooterTemplate> 
     <asp:TextBox ID="txtWebLogin" runat="server"></asp:TextBox> 
    </FooterTemplate> 
</asp:TemplateField> 

Там является контроль ValidationSummary на форме, которая работает, потому что я могу установить ErrorMessage к символьной строке и увидеть, что он работает.

Вот код из моих .cs:

public string LoginRequired 
{ 
    get { return "Error, please try again"; } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
     BindDataToGrid(); 
} 

private void BindDataToGrid() 
{ 
    DataTable dt; 
    SqlCommand sc = new SqlCommand(); 
    DAL oDAL = new DAL(DBInformation.Instance.CurrentEncodedConnectionString, DBInformation.Instance.ConnectionTimeout); 

    //Get User Information. 
    sc.CommandText = Constants.StoredProcedureNames.GetUsers; 
    dt = oDAL.SPDataTable(sc, "AllUsers"); 
    gvUsers.DataSource = dt; 

    foreach (DataRow dr in dt.Rows) 
     lUser.Add(new User()); 

    gvUsers.DataBind(); 
} 

какие-либо идеи относительно того, почему он не работает?

+0

не вы Свяжите ErrorMessage <%# %> и не делать Response.Write <%= %> –

+0

OMG, я чувствую себя глупо сейчас ..... это сработало .... th anks. можете ли вы отправить ответ, чтобы я мог отметить его, пожалуйста. – Robert

+1

Ответ nuux правильный, так что вы принимаете это :) –

ответ

2

Изменить этот

ErrorMessage='<%= this.LoginRequired %>' 

в эту

ErrorMessage='<%# this.LoginRequired %>' 

и вызвать DataBind() в загрузке страницы

protected void Page_Load(object sender, EventArgs e) 
{ 
if (!IsPostBack) 
    { 
    DataBind(); 
    BindDataToGrid(); 
} 
} 
Смежные вопросы