none
Login控件使用疑问 RRS feed

  • 问题

  • 为什么这个控件必须在IsPostBack = true 时才会生效?

    现象为第1次打开页面时,用户名和密码填上然后点登陆就会刷新一下页面, 然后IsPostBack=true, 没任何反应. 此时Login控件的事件也不会触发. 只有第二次点登陆时才生效.

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="授权系统._Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <style type="text/css">
            .style1
            {
                width: 100%;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
       
            <asp:Panel ID="pnlLogin" runat="server" style="text-align: center">
                <table class="style1">
                    <tr>
                        <td>
                            <asp:Login ID="LoginProxy" runat="server" BackColor="#F7F6F3"
                                BorderColor="#E6E2D8" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px"
                                Font-Names="Verdana" Font-Size="0.8em" ForeColor="#333333"
                                onauthenticate="Login1_Authenticate" style="text-align: center">
                                <TextBoxStyle Font-Size="0.8em" />
                                <LoginButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid"
                                    BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284775" />
                                <InstructionTextStyle Font-Italic="True" ForeColor="Black" />
                                <TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.9em"
                                    ForeColor="White" />
                            </asp:Login>
                        </td>
                    </tr>
                </table>
            </asp:Panel>
       
        </div>
        <asp:Panel ID="pnlUserCenter" runat="server" style="text-align: center"
            Visible="False">
            <asp:GridView ID="GridView1" runat="server" AllowSorting="True"
                AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1"
                ForeColor="#333333" GridLines="None">
                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                <Columns>
                    <asp:BoundField DataField="UserName" HeaderText="UserName"
                        SortExpression="UserName" />
                    <asp:BoundField DataField="LicNumber" HeaderText="LicNumber"
                        SortExpression="LicNumber" />
                    <asp:BoundField DataField="licEnd" HeaderText="licEnd"
                        SortExpression="licEnd" />
                    <asp:BoundField DataField="RMB" HeaderText="RMB" SortExpression="RMB" />
                </Columns>
                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                <EditRowStyle BackColor="#999999" />
                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server"
                ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT [UserName], [LicNumber], [licEnd], [RMB] FROM [DataUser] where Proxy=@a order by licend
    ">
                <SelectParameters>
                    <asp:ControlParameter ControlID="LoginProxy" Name="a" PropertyName="UserName"
                        Type="String" />
                </SelectParameters>
            </asp:SqlDataSource>
            &nbsp;
        </asp:Panel>
        </form>
    </body>
    </html>


    虚幻的美丽, 飘渺亦永恒。
    2010年2月11日 3:33

答案

  • 是默认的.什么都没改.
    这个现象很奇怪..本机调试,有时候会出现,有时候不会出现..一但出现就一直都出现直到重启..
    编译好后丢到IIS上就没这问题..
    是不是我有什么地方写得不够规范..

    OS: windows7


    虚幻的美丽, 飘渺亦永恒。

    你用了缓存没或者用什么浏览器测试的出现这个问题一般是浏览器缓存造成的
    2010年2月12日 14:34

全部回复

  • 你好,

    我把你的login 部分的代码考下来在我本地测试了没有发现你说的这个情况,所以可能是你代码的问题。

    我使用的是默认的membership provider。

    如果你仍然未解决这个问题,请贴出你的后台代码,是否使用的是自定义的provider?
    Microsoft Online Community Support
    2010年2月12日 3:01
  • 是默认的.什么都没改.
    这个现象很奇怪..本机调试,有时候会出现,有时候不会出现..一但出现就一直都出现直到重启..
    编译好后丢到IIS上就没这问题..
    是不是我有什么地方写得不够规范..

    OS: windows7


    虚幻的美丽, 飘渺亦永恒。
    2010年2月12日 13:35
  • 另外有一个可能和此问题的原因有关的细节.
    本机调试运行时经常出现运行后必须强制刷新页面才正确更新为最新.否则VS2008打开的IE页面是旧的.

    虚幻的美丽, 飘渺亦永恒。
    2010年2月12日 13:38
  • 是默认的.什么都没改.
    这个现象很奇怪..本机调试,有时候会出现,有时候不会出现..一但出现就一直都出现直到重启..
    编译好后丢到IIS上就没这问题..
    是不是我有什么地方写得不够规范..

    OS: windows7


    虚幻的美丽, 飘渺亦永恒。

    你用了缓存没或者用什么浏览器测试的出现这个问题一般是浏览器缓存造成的
    2010年2月12日 14:34