2012-06-27 2 views
0

Я использую архитектуру MVC в ASP.NET 3.5. В правлении я получаю вышеуказанную ошибку.В ошибке MVC: «Необработанное исключение типа« System.StackOverflowException »произошло в Morvel.DLL«

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) это в БАЛ файл класса

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

хорошо я получил мой ответ, я вмятину использовать объект класса декалитров для вызова функции в файле класса баля --- 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. Я думаю, вы бы хотели вызвать метод editp в классе DAL, но вы снова и снова вызываете тот же метод editp.

+0

да u правильные, так как я его решаю ... – Zoya

+0

@ Zoya вы должны публиковать ** еще больше ** код, 'editp' в классе DAL не является статическим, поэтому вам нужен экземпляр этот класс внутри вашего класса BAL. У тебя есть это? Управляйте этим экземпляром, затем просто вызывайте '_instanceOfDalClass.editp (pcode, PName, Tel);'. –

+1

ОК, я получил свой ответ, я использую объект класса dal для вызова функции в файле класса bal – Zoya

0

3) это в файле класса БАЛА

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; 
    } 
Смежные вопросы