2010-12-05 5 views
4

Я использую Microsoft Visual Basic 2010 для сайта asp.net с использованием C#.Проверьте, если пользователь зарегистрирован

Я использую конфигурацию asp.net для регистрации пользователя. У меня есть форма комментариев, которые я хочу отображать только в том случае, если пользователь вошел в систему.

Теперь я вижу вспомогательную вещь для инструмента, называемую Login View, которая делает именно то, что я хочу, но как только я помещаю форму внутри кода не будет компилироваться, потому что он не может найти поля текстового поля.

У меня есть следующие в NewsArticle.aspx:

<asp:LoginView ID="LoginView1" runat="server"> 
<AnonymousTemplate> 
     <div class="postcomment"> 
      <p><a href="/account/Login.aspx">Login</a> or <a href="/account/Register.aspx">register</a> to post a comment.</p> 
     </div> 
</AnonymousTemplate> 
<LoggedInTemplate> 
     <div class="formcomment"> 
      <asp:TextBox ID="txtTitle" textMode="SingleLine" runat="server"></asp:TextBox> 
      <asp:TextBox ID="txtComment" TextMode="MultiLine" runat="server"></asp:TextBox> 
      <asp:Button ID="cmdUpdate" runat="server" Text="Add Comment" onclick="cmdUpdate_Click" /> 
     </div> 
</LoggedInTemplate> 

О NewsArticle.aspx.cs У меня есть:

protected void cmdUpdate_Click(object sender, EventArgs e) { 

    // Get user id 
    Guid gUser; 
    MembershipUser user = Membership.GetUser(Page.User.Identity.Name); 
    gUser = (Guid)user.ProviderUserKey; 

    // get article id 
    int articleid = Convert.ToInt16(Request.QueryString["id"]); 

    // Add to db 
    FrontendTableAdapters.NewsCommentTableAdapter ta = new FrontendTableAdapters.NewsCommentTableAdapter(); 
    ta.Insert1(articleid, gUser.ToString(), txtTitle.Text, txtComment.Text); 

    // Redirect back to article 
    Response.Redirect(String.Format("NewsArticle.aspx?id={0}#comments", articleid)); 
} 

Если взять форму из осины: LoginView работает отлично. Внутри я получаю следующее:

Error 2 The name 'txtTitle' does not exist in the current context NewsArticle.aspx.cs 59 53 Figmentville 
Error 3 The name 'txtComment' does not exist in the current context \NewsArticle.aspx.cs 59 68 Figmentville 

ответ

2

Вы не можете напрямую обращаться к txtTitle и txtComment.

К ним должен быть доступен элемент управления LoginView, поскольку они содержатся в нем.

Вы должны использовать метод FindControl, чтобы найти эти элементы управления: LoginView.FindControl (Stringid)

+0

Спасибо за столь быстро. Я пробовал следующее: ta.Insert1 (articleid, gUser.ToString(), LoginView.FindControl (txtTitle) .Text, oginView.FindControl (txtComment) .Text); , но это все равно показывает ту же ошибку: S. – daveredfern 2010-12-05 21:02:10

Смежные вопросы