2010-12-05 31 views
4

J'utilise Microsoft Visual basic 2010 pour un site asp.net utilisant C#. J'utilise la configuration asp.net pour l'enregistrement de l'utilisateur. J'ai un formulaire de commentaires que je veux apparaître seulement si un utilisateur est connecté.Vérifiez si l'utilisateur est connecté

Maintenant, il y a une chose d'aide de boîte à outils appelée Vue de connexion qui fait exactement ce que je veux mais dès que je mets un formulaire dans le code ne compilera pas car il ne peut pas trouver les champs de la zone de texte.

je suit dans 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> 

Sur les NewsArticle.aspx.cs je:

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)); 
} 

Si je prends la forme de asp: LoginView fonctionne correctement. A l'intérieur, je reçois ce qui suit:

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 

Répondre

2

Vous ne pouvez pas accéder directement à txtTitle et à txtComment.

Ces éléments doivent être accessibles via le contrôle LoginView, car ils sont contenus dans celui-ci.

Vous devez utiliser la méthode FindControl pour localiser ces contrôles: LoginView.FindControl (stringID)

+0

Merci d'avoir répondu si rapidement. J'ai essayé ce qui suit: ta.Insert1 (articleid, gUser.ToString(), LoginView.FindControl (txtTitle) .Text, oginView.FindControl (txtComment) .Text); mais cela montre toujours la même erreur: S. – daveredfern

+0

Pouvez-vous spécifier le code réel et les messages d'erreur. Je crois que cela devrait être: LoginView1.FindControl ("txtComment") Si cela échoue, le message d'erreur devrait être une exception Nullreference. –

+0

J'ai les éléments suivants: LoginView1.FindControl (txtTitle) .Text. L'erreur est: Erreur 2 Le nom 'txtTitle' n'existe pas dans le contexte actuel \t NewsArticle.aspx.cs 59 76 Figmentville – daveredfern