0

私はWebアプリケーションに取り組んでいます。このアプリケーションでは、ユーザーはいくつかのタスクを実行するためにログインする必要があります。カスタムログイン画面を作成しました。ユーザーがログインするとすぐにsite.masterのログイン状態が更新されるようにしたいのですが、率直に言って、その方法がわかりません。

以下のコードは、login.aspx.cs から取得したものです。ユーザーがログインボタンをクリックすると、次のコードが実行されます。しかし、site.master のログイン ステータスを更新できるかどうかはわかりません (画像が含まれています)。

 protected void Button1_Click(object sender, EventArgs e)
        {
            string user = username.Text;
            string pass = password.Text;
            Session["firstName"] = username.Text;
            localhost.UserRegistration n = new localhost.UserRegistration();


            if (n.checkUser(user, pass))
            {
                Response.Redirect("UserProfile.aspx");
            }
            else
            {
                message1.Text = "UserName or Password is Wrong. Please check your details and login again.";
            }

ここをクリックて写真を見て、誰かがそれについて考えているかもしれません.

Site.マスターコード

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="SystemSoftware.SiteMaster" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
    <title></title>
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form runat="server">
    <div class="page">
        <div class="header">
            <div class="title">
                <h1>
                    My ASP.NET Application
                </h1>
            </div>
            <div class="loginDisplay">
                <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
                    <AnonymousTemplate>
                        [ <a href="~/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> ]
                    </AnonymousTemplate>
                    <LoggedInTemplate>
                        Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
                        [ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/"/> ]
                    </LoggedInTemplate>
                </asp:LoginView>
            </div>
            <div class="clear hideSkiplink">
                <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                    <Items>

                        <asp:MenuItem NavigateUrl="~/Create Account.aspx" Text="Create Account"/>


                    </Items>
                </asp:Menu>
            </div>
        </div>
        <div class="main">
            <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
        </div>
        <div class="clear">
        </div>
    </div>
    <div class="footer">

    </div>
    </form>
</body>
</html>

Site.Master.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SystemSoftware
{
    public partial class SiteMaster : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["firstName"] != null)
            {
                HeadLoginView.Visible = false;
            }
            else
            {
                HeadLoginView.Visible = true;

            }
        }

    }
}
4

2 に答える 2

1

ユーザーがログインしたときに作成しているセッションの masterpage load イベントを確認します。そのセッションが空でない場合は show logout link 、それ以外の場合はそのリンク login を保持します。マスター aspx に 2 つのリンクを追加します。1 つはログイン用、もう 1 つはログアウト用です。

protected void Page_Load(object sender, EventArgs e)
        {

            if (Session["Username"]!=null && Session["Username"]!=String.Empty)
            {
               lnkLogin.visible = false;
               lnkLogout.visible = true;
            }else{
               lnkLogin.visible = true;
               lnkLogout.visible = false;
            }
}
于 2012-10-19T15:20:19.277 に答える
0

マスターページのコントロールのプロパティをローカルページから変更することもできます

文字列 a = ((LinkBut​​ton)Master.FindControl("LinkLogIn")).Text

同じ方法で、他のプロパティも変更できます

于 2012-10-19T15:23:13.380 に答える