У меня есть masterpage файл, который называют Masterpage.master, который хорошо работает со всеми моими aspx страницами кроме aspx страниц, на которых я пытаюсь инстанцировать материала в методе Page_Load в codebehind файле.
aspx файл по имени ManageRoles.aspx похож на это -
<%@ Page Language="C#"
AutoEventWireup="true"
CodeBehind="ManageRoles.aspx.cs"
Inherits="eservice.ManageRoles"
MasterPageFile="~/MasterPage.Master"
%>
<asp:Content ID="Content2"
ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
<!-- Start of roles -->
<h3>
Manage Roles</h3>
<asp:Label ID="Msg" ForeColor="maroon" runat="server" />
<br />
<!-- End of roles -->
<asp:LoginView ID="LoginView2" runat="server">
<LoggedInTemplate>
<p id="backtoblog"></p>
<!-- End of roles -->
</LoggedInTemplate>
<AnonymousTemplate>
</AnonymousTemplate>
</asp:LoginView>
</asp:Content>
и код - позади файла по имени ManageRoles.aspx.cs похож на это -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
namespace eservice
{
public partial class ManageRoles : System.Web.UI.Page
{
private string[] rolesArray;
private string[] usersInRole;
MembershipUserCollection users;
protected void Page_Load(object sender, EventArgs e)
{
// clear the Msg label on each visit
Msg.Text = string.Empty;
}
}
}
Файл Masterpage.master содержит довольное раздел как это -
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
Это - проект веб-приложения, и он создает прекрасный, но выдает исключение на этапе выполнения, когда я нажимаю на ссылку для ManageRoles.aspx
Я получаю следующее исключение -
Система. NullReferenceException был не обработан пользовательским закодированным сообщением = "Ссылка на объект не набор к экземпляру объекта". Источник = "eservice" StackTrace: в eservice. ManageRoles. Page_Load (Объектный отправитель, EventArgs e) в C:\Users\das.arunabh\Documents\Visual Studio 2008\Projects\ESERVICE_SOLUTION-MAIN\eservice\eservice\ManageRoles.aspx.cs:line 24 в System. Сеть. Util. CalliHelper. EventArgFunctionCaller (IntPtr fp, Объект o, Объект t, EventArgs e) в System. Сеть. Util. CalliEventHandlerDelegateProxy. Обратный вызов (Объектный отправитель, EventArgs e) в System. Сеть. UI.Control. OnLoad (EventArgs e) в Системе. Сеть. UI.Control. LoadRecursive () в Системе. Сеть. UI.Page. ProcessRequestMain (булевская переменная includeStagesBeforeAsyncPoint, булевская переменная includeStagesAfterAsyncPoint) InnerException:
Я не думаю, что Msg
является зарезервированным словом, но вы можете попробовать переименовать его. Скорее всего, дизайнер не создал переменную-член должным образом в вашем файле Designer.cs. Попробуйте сделать следующее (в основном, удалите, а затем добавьте html для ярлыка, чтобы дизайнер создал переменную-член):
ошибка говорит о том, что вы пытаетесь присвоить значение Msg.Text
, но Msg.Text
не существует в вашей текущей области.
Как правило, я бы воздержался от выполнения служб аутентификации внутри файлов кода главной страницы ... Используйте файл кода login.aspx.cs для вашей фактической службы аутентификации и оставьте главную страницу делать то, для чего предназначены мастер-страницы ... Показать презентацию и контент .
<% @ Master Language = "C #" AutoEventWireup = "true" CodeFile = "Site.master.cs" Inherits = "Site"%> Формы аутентификации, авторизации и учетных записей пользователей
Руководства по учетным записям пользователей ТОДО: Здесь будет меню ...
Примечание: http://www.asp.net/security/tutorials/an-overview-of-forms-authentication-cs