PDA

View Full Version : نشان داده نشدن کلاس LINQ



jaykob
یک شنبه 10 بهمن 1389, 12:50 عصر
سلام دوستان

من پروژه ای دارم که یک کلاس linqtosql داره . حالا یک پنل admin دارم که در صفحاتش از dataclassesdatacontext می تونم استفاده کنم اما صفحاتی که خارج از این فولدر هستند مثل ارتباط با ما برای ارتباط با دیتابیس می خوام اما اصلا datacontext برای این کلاس نمی آد کلا اسم کلاس نمی آد مشکل از کجاست ؟

ممنون

b.paseban
یک شنبه 10 بهمن 1389, 13:44 عصر
سلام دوست عزیز.
شما یک کلاس ایجاد کن توی روت سایت و همه توابعی رو که میخوای ازشون استفاده کنی رو public static تعریف کن.
اینجوری از این کلاس و توابع داخل اون میتونی توی همه جای وب سایت استفاده کنی.
امیدوارم کمکتون کرده باشم.

Program.net
یک شنبه 10 بهمن 1389, 14:16 عصر
سلام دوستان

من پروژه ای دارم که یک کلاس linqtosql داره . حالا یک پنل admin دارم که در صفحاتش از dataclassesdatacontext می تونم استفاده کنم اما صفحاتی که خارج از این فولدر هستند مثل ارتباط با ما برای ارتباط با دیتابیس می خوام اما اصلا datacontext برای این کلاس نمی آد کلا اسم کلاس نمی آد مشکل از کجاست ؟

ممنون

فکر کنم کلاس linq رو توی appcode توی فایل root پروژت بزاری همه جا میشه استفادش کنی

jaykob
یک شنبه 10 بهمن 1389, 17:53 عصر
ممنون دوستان اما من هم داخل app_code گذاشتم مشکلی باز هم به همان شکل بود . و این کلاس شناخته نمی شه به طور مثال این کلاس در صفحه changepass.aspx در فولدر Admin می آد و باهاش کار می کنم اما در صفحه contact.aspx که در root پروژه قرار گرفته کلاس نمی آد . هر بار Build هم می کنم اما این مشکل پا برجاست در پروژه های قبلیم با همچین مشکلی بر نخورده بودم . ممنون می شم راه حلی پیدا کنید .

ممنون

Javad_Darvish_Amiry
یک شنبه 10 بهمن 1389, 18:38 عصر
فضای نام ها رو چک کن. یا فایل کلاس؛ و یه فایل از اونایی که میاد و یه فایل از اونایی که نمیاد بذار اینجا.

jaykob
یک شنبه 10 بهمن 1389, 20:29 عصر
فضای نام ها رو چک کن. یا فایل کلاس؛ و یه فایل از اونایی که میاد و یه فایل از اونایی که نمیاد بذار اینجا.

ممنون

این کد اون صفحه ای است که کلاس داخلش می آد :



using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace rayenproject.AdminPanel
{
public partial class ChangePass : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
}
}



و این کد اون صفحه که کلاس داخلش نمی آد :



using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;


public partial class OrderProducts : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
}



اما به این شکل namespace رو اضافه کردم یه صفحه ای که کلاس نمی آمد کلاس می آد با این کار اما خطا می گیره و صفحه اجرا نمی شه :



using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;


namespace rayenproject
{
public partial class OrderProducts : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
}
}




با تشکر

Javad_Darvish_Amiry
یک شنبه 10 بهمن 1389, 21:07 عصر
این فضای نام صفحه ایه که کلاس رو توش میبینی: rayenproject.AdminPanel بدون هیچگونه تلاشی. پس نتیجتا کلاسی که شما تعریف کردی توی این فضای نام قرار داره. حالا شما برای استفاده چند تا راه داری:
۱- کلاسی که میخوای از کلاس مفروض توش استفاده کنی تو فضای نام مشابهی قرار داشته باشه؛ یعنی rayenproject.AdminPanel
۲- موقع فراخونی کلاس مفروض مسیر کامل رو بهش بدی مثلا اگه اسم کلاس مفروض MyClass هست موقعی که باهاش کار داری اینجوری بهش اشاره کنی: rayenproject.AdminPanel.MyClass
۳- ساده ترین و متداولترین روش هم اینه که فضای نام rayenproject.AdminPanel رو به لیست یوزینگ ها توی کلاسی که میخوای از کلاس مفروض استفاده کنی اضافه کنی. یعنی اون صفحه ای که کلاس نمیومد (کد بخش دوم که بالا نوشتی) رو به این صورت تغییر بدی:


using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using rayenproject.AdminPanel;


public partial class OrderProducts : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
}

البته یادمون باشه وقتی برای یه کلاس فضای نامی در نظر نمیگیریم (مثل همین مورد شما که کلاس صفحه اتون بدون فضای نام هستش) خود دات نت یه فضای نام براش در نظر میگیره. به نظر من بهتره همیشه خودمون یه فضای نام مطابق با پروژه و دایرکتوری های موجود تو پروژه براش در نظر بگیریم. مدیریت برای خودمون خیلی راحت تر میشه. موفق باشید.