2012-06-27 89 views
0

我在ASP.NET 3.5中使用MVC体系结构。在编辑中,我收到了上述错误。在MVC错误:“在Morvel.DLL中发生类型'System.StackOverflowException'的未处理的异常”

1)我已经使用存储过程:

ALTER PROCEDURE [dbo].[editparty] 

    (
    @pcode nvarchar(50), 

    @cname nvarchar(100), 

    @cont nvarchar(50) 
    ) 
AS 


update tbl_party set [email protected],party_code = @pcode,party_contact [email protected] where party_id=(Select party_id from tbl_party where party_code = @pcode) 

2)这是我在DAL类文件功能:

public DataSet editp(BOParty pcode, BOParty PName, BOParty Tel) 
     { 
      OpenCnn(); 
      SqlCommand cmd = new SqlCommand("editparty", cnn); 
      cmd.CommandType = CommandType.StoredProcedure; 
      SqlParameter[] par = { new SqlParameter("@pcode", pcode.pcode), }; 
      cmd.Parameters.AddRange(par); 
      SqlParameter[] nm = { new SqlParameter("@PName", pcode.pcode), }; 
      cmd.Parameters.AddRange(nm); 
      SqlParameter[] tl = { new SqlParameter("@Tel", pcode.pcode), }; 
      cmd.Parameters.AddRange(tl); 
      SqlDataAdapter ad = new SqlDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      ad.Fill(ds); 
      return ds; 
      CloseCnn(); 


     } 

3)此在BAL类文件

public DataSet editp(BOParty pcode, BOParty PName, BOParty Tel) 
    { 
     DataSet ds = new DataSet(); 
     ds = new DataSet(); 
     ds = editp(pcode, PName, Tel); 
     return ds; 
    } 

4)这是在.cs文件中:

protected void edit_Click(object sender, EventArgs e) 
    { 

     pcode.pcode = txtpcde.Text; 
     pcode.Tel= txtcont.Text; 
     pcode.PName = txtcname.Text; 

     DataSet ds = new DataSet(); 
     ds = new DataSet(); 
     ds = pcode.editp(pcode, PName, Tel); 

     edit.Enabled = false; 

    } 
+0

还好我有我的回答,我不力DAL类的使用对象调用BAL类文件中的函数--- http://stackoverflow.com/ a/11225083/1445836 – Zoya

回答

1

在突出显示的行看你editp功能:

public DataSet editp(BOParty pcode, BOParty PName, BOParty Tel) 
{ 
    DataSet ds = new DataSet(); 
    ds = new DataSet(); 
    ds = editp(pcode, PName, Tel); // <--- HERE 
    return ds; 
} 

你叫editp递归那么它会引起StackOverflowException。我想你想在DAL类中调用editp方法,但是你一次又一次调用相同的editp方法。

+0

是的,你是正确的,那么我该如何解决它... – Zoya

+0

@Zoya你应该发布**更多的**代码,在DAL类中的'editp'不是静态的,所以你需要一个实例BAL班级内的那个班级。你有吗?管理这个实例,然后简单地调用'_instanceOfDalClass.editp(pcode,PName,Tel);'。 –

+1

好吧我得到了我的答案,我dint使用dal类的对象调用bal类文件中的函数 – Zoya

0

3)这在BAL类文件

public DataSet editp(BOParty pcode, BOParty PName, BOParty Tel) 
    { 
     DataSet ds = new DataSet(); 
     ds = new DataSet(); 
     ds = party.editp(pcode, PName, Tel);<------ party is object of DAL class file(private  DAParty partydata;)-------------- 


     return ds; 
    } 
相关问题