Проверьте, вошел ли пользователь в систему - PullRequest
4 голосов
/ 05 декабря 2010

Я использую 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));
}

Если я возьму форму из asp: 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

1 Ответ

2 голосов
/ 05 декабря 2010

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

Доступ к ним должен осуществляться через элемент управления LoginView, поскольку они содержатся в нем.

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

...