PDA

View Full Version : سوال: عدم شناختن کلاس ( cs. )



forodo
دوشنبه 07 مهر 1393, 23:25 عصر
سلام
من یک فولدر App_Code رو ایجاد کردم و یک کلاس داخلش add کردم ولی اون کلاس رو نمی تونم جایی فراخوانی کنم.
اصلاً اسم کلاس توی اینتلیسنس نیست.

saeed31641
سه شنبه 08 مهر 1393, 07:32 صبح
public کردی

forodo
سه شنبه 08 مهر 1393, 09:06 صبح
اینجا (http://www.1developer.ir/post/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%AF%D8%B1-aspnet-%DA%A9%D9%84%D8%A7%D8%B3-%D8%AC%D8%AF%DB%8C%D8%AF-%D8%A8%D9%86%D9%88%DB%8C%D8%B3%DB%8C%D9%85%D8%9F.a spx)گفته باید این کار رو بکنم.
ولی کلاس رو نمیشناسه.
http://8pic.ir/images/k2ldrxs2w5g2q6u8vq8r.png

http://8pic.ir/images/h9i73mclz8v2qmgn5qa9.png

yasesepid
سه شنبه 08 مهر 1393, 09:35 صبح
سلام
من یک فولدر App_Code رو ایجاد کردم و یک کلاس داخلش add کردم ولی اون کلاس رو نمی تونم جایی فراخوانی کنم.
اصلاً اسم کلاس توی اینتلیسنس نیست.

به نظر میرسه توی تصویر قبلی،کلاست از نوع static گرفتی،کلاس static بدون ایجادنمونه قابل استفاده است

forodo
سه شنبه 08 مهر 1393, 09:43 صبح
خط تعریف کلاست رو بذار
یه کلاس به پروژه Add کردم با کد تعریفش نکردم.

demolition
سه شنبه 08 مهر 1393, 10:42 صبح
کلاسی که استفاده کرده اید دارای name space هست برای دسترسی بهش باید ;Using MyFirstSite.App_Code.Class اضافه بشه
یا داخل رویداد کلیک MyFirstSite.App_Code.Class.clsِِِDatabaseCode فراخوانی بشه

forodo
سه شنبه 08 مهر 1393, 10:58 صبح
کلاسی که استفاده کرده اید دارای name space هست برای دسترسی بهش باید ;Using MyFirstSite.App_Code.Class اضافه بشه
یا داخل رویداد کلیک MyFirstSite.App_Code.Class.clsِِِDatabaseCode فراخوانی بشه
MyFirstSite رو که تایپ می کنم بعدش App_Code رو نداره.

saeed31641
سه شنبه 08 مهر 1393, 13:09 عصر
کلاس بزار اینجا اگه امکانش هست

forodo
سه شنبه 08 مهر 1393, 14:03 عصر
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MyFirstSite.App_Code
{
public class clscls
{

}
}

fakhravari
سه شنبه 08 مهر 1393, 15:01 عصر
public static sqlcon....

forodo
سه شنبه 08 مهر 1393, 15:55 عصر
public static sqlcon....
اصلاً کلاس رو نمی شناسه که بخواد به محتویات داخلش دسترسی پیدا کنه.

fakhravari
سه شنبه 08 مهر 1393, 17:07 عصر
using System.Data.SqlClient;

public static class DataAccessLayers
{
public static SqlConnection con = new SqlConnection();
}
protected void Page_Load(object sender, EventArgs e) {
SqlConnection Comn = DataAccessLayers.con;
}

forodo
سه شنبه 08 مهر 1393, 17:22 عصر
توی یه فولدر انداختمش.
این کلاس رو نمشناسه حتی با اینکه می خوام namespace رو بدم app_code رو نمیاره:
کلاس clscls رو نمیاره.
http://8pic.ir/images/9wl5r1p9jztm2wzw26bc.png
این هم کدهای داخل کلاس:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MyFirstSite.App_Code
{
public class clscls
{

}
}

yasesepid
سه شنبه 08 مهر 1393, 18:43 عصر
سلام
ببین namespace ی که کلاس توش تعریف شده MyFirstSite.App_Code و nameSpace ی که داری باهاش کار میکنی MyFirstSite پس برای رسیدن به کلاس کافیه
.AppCode
رو وارد کنی اسم کلاس رو میاره
یا اینکه خودت اسم کلاس رو تایپ کن تا ازت بخاد namespace کلاس رو به صفحه اضافه کنی

forodo
سه شنبه 08 مهر 1393, 19:28 عصر
نمیاره.
اسم کلاس رو هم که می نویسم اون فلشرو نمیاره تا بهش بگم خودش اضافه کنه.

yasesepid
سه شنبه 08 مهر 1393, 19:50 عصر
نمیاره.
اسم کلاس رو هم که می نویسم اون فلشرو نمیاره تا بهش بگم خودش اضافه کنه.

حالت اول چی؟اونم نمیاره؟

forodo
سه شنبه 08 مهر 1393, 20:00 عصر
حالت اول چی؟اونم نمیاره؟
نه.
بعد از MyFirstSite که نقطه می ذارم و لیست باز میشه اصلاً App_Code یا AppCode نیست.

Mori Bone
سه شنبه 08 مهر 1393, 20:44 عصر
namespaceها باید همه یکی باشه

forodo
سه شنبه 08 مهر 1393, 20:55 عصر
namespaceها باید همه یکی باشه
اون تکه App_Code. رو برداشتم ولی بازم نشناخت

fakhravari
سه شنبه 08 مهر 1393, 21:09 عصر
forodo عزیز دل چرا یکم دقت نمیکنی
مطلب من دیدی؟

forodo
سه شنبه 08 مهر 1393, 21:19 عصر
using System.Data.SqlClient;

public static class DataAccessLayers
{
public static SqlConnection con = new SqlConnection();
}
protected void Page_Load(object sender, EventArgs e) {
SqlConnection Comn = DataAccessLayers.con;
}

forodo عزیز دل چرا یکم دقت نمیکنی
مطلب من دیدی؟
من کلاس رو داخل یک فولدر قرار دادم.
مطلب شما هم دیدم نوکرتم ولی فرقی نداشت.
برای من اصلاً اسم کلاس ( DataAccessLayers ) رو نمیاره.

cj.saeed
شنبه 18 بهمن 1393, 20:12 عصر
من کلاس رو داخل یک فولدر قرار دادم.
مطلب شما هم دیدم نوکرتم ولی فرقی نداشت.
برای من اصلاً اسم کلاس ( DataAccessLayers ) رو نمیاره.
مال منم همینطوریه وقتی ی کلاس اد میکنیم باید خودش پوشه App_Code رو بسازه که تو ویژوال 2013 که منم دارم نمیسازه و برای همین داخل پوشه اگر کلاس ها رو بریزی فراخونی نمیکنه.مگر اینکه تو همون ریشه اصلی فایل های کلاس رو بریزی!
من ویژوال 2013 آپدیت 3 رو دارم و مطمئنما مال شما هم همینطور باشه
کسی نمیتونه نظری بده !؟
تشکر

fakhravari
یک شنبه 19 بهمن 1393, 00:51 صبح
نوع web app فرقش با نوع web site در همین.
در web site کلاس ها در app code میره

cj.saeed
یک شنبه 19 بهمن 1393, 13:47 عصر
نوع web app فرقش با نوع web site در همین.
در web site کلاس ها در app code میره
آها فهمیدم چرا اینجوری میشه
وقتی new projhect migiraim تو Visual studio این پوه رو نمیسازه
باید new website بزنیم
ممنون از دوستان

rezapori
شنبه 09 مرداد 1395, 10:07 صبح
سلام
من یک فولدر App_Code رو ایجاد کردم و یک کلاس داخلش add کردم ولی اون کلاس رو نمی تونم جایی فراخوانی کنم.
اصلاً اسم کلاس توی اینتلیسنس نیست.
-----------------
با سلام، این سوال خودم و خیلی از دوستانه که بی جواب مونده بود و با یه جستجو پیداش کردم و تست کردم جواب داد حیفم اومد نذارمش اینجا، هرچند سوال مال خیلی وقت پیشه!!
در صورتی که کلاسهای داخل پوشه app_Code داخل کدها قابل دسترسی نمی باشد:

1- روی کلاس مورد نظر راست کلیک کرده، properties را انتخاب و خاصیت BuildAction را روی Compile قرار داده و پروژه را ذخیره
3- پروژه را یک بار Build نمایید. (در منبع اصلی اشاره ای نکرده ولی خودم تا بویلدش نکردم درست نشد).
2- حال Using yourProject.App_Code قابل استفاده خواهد بود، تا زمانی که مرحله اول و دوم را انجام ندهید App_Code قابل مشاهده نیست.
3- کلاس مورد نظر هم اکنون در دسترس است

منبع:
http://stackoverflow.com/questions/14204990/unable-to-call-app-code-class-from-a-code-behind
------------
به تجربه برام ثابت شده که با جستجوی سوالات خود به زبان انگلیسی زودتر به نتیجه درست خواهیم رسید!!