从Asp.net中的其他类调用代码时出错
本文关键字:调用 代码 出错 其他 Asp net | 更新日期: 2023-09-27 18:01:58
我正在开发一个Asp.net网站,我决定使用面向对象的概念来做。
所以我的第一个想法是将我的代码(整个后台代码)封装在外部类中,然后在我的Aspx页面中调用它来执行。
我创建了一个新类,然后我从主类派生它,以便能够访问主类控件,如按钮,标签等…
当我调用包含代码的方法时它会给我一个错误
"对象引用未设置为对象的实例。"
所以我认为这意味着我的第二个类(派生类)不能访问我的主要类对象/控件和运行代码取决于它的值。
方法应该根据下拉列表执行一些代码,但是它给出了这个错误。
我真的很感谢你的帮助!
1-在(aspx page)方法中的主类的后台代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
namespace power_CMS.Authentication
{
public partial class Permissions : System.Web.UI.Page
{
//connection string
//db name = cms
SqlConnection conn = new SqlConnection("data source=.''sqlexpress ; initial catalog=cms ; integrated security = true");
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btn_grant_Click(object sender, EventArgs e)
{ //grant permission to Members
Cms c = new Cms();
c.User_Role_Insert();
}
2-我的aspx页面设计代码的一部分
protected global::System.Web.UI.WebControls.DropDownList drp_user;
/// <summary>
/// UserDataSource control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
下面是我的派生类的代码,我把我的代码封装在里面:
namespace power_CMS
{
public class Cms :power_CMS.Authentication.Permissions
{
//sql connection
public static SqlConnection conn = new SqlConnection("data source=.''sqlexpress ; initial catalog=*** ; integrated security = true");
public void User_Role_Insert()
{
if (drp_user.SelectedIndex == 0 && drp_permission.SelectedIndex == 0 || drp_user.SelectedIndex == 0 || drp_permission.SelectedIndex == 0)
{
//make sure that user will make a valid choise with both dropdownlists
//Invalid Choise Code
lbl_confirm.Text = "Please Make A Valid Choise !";
}
else
{
// Valid Choise Code
try
{
conn.Open();
// string str = "insert into aspnet_UsersInRoles(UserId,RoleId) values('"+c.drp_user.SelectedValue+"','"+drp_permission.SelectedValue+"')";
SqlCommand cmd = new SqlCommand("aspnet_UsersInRoles_Insert", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("UserId", SqlDbType.UniqueIdentifier).Value = new Guid(drp_user.SelectedValue);
cmd.Parameters.Add("RoleId", SqlDbType.UniqueIdentifier).Value = new Guid(drp_permission.SelectedValue);
cmd.ExecuteNonQuery();
conn.Close();
lbl_confirm.Text = "Permission Granted ...!";
drp_user.SelectedIndex = 0;
drp_permission.SelectedIndex = 0;
}
catch (Exception)
{
lbl_confirm.Text = "Sorry <br> This User Already Have A Permission ! ";
}
}
}
}
}
Where your drp_user define ?如果你没有定义这个对象,它将是空的
如果您仍然不想定义DRP,则必须在if
中更改if (drp_user != null && (drp_user.SelectedIndex == 0 ....
在您的aspx标记中,您是否将Autopostback设置为true?为什么不使用下拉选择索引更改事件来记录值并将其传递给您的DB方法?