PDA

View Full Version : سوال: عدم دسترسی به Resource های یک ASP.NET Control



salehbagheri
سه شنبه 04 خرداد 1389, 17:55 عصر
من در حال ساخت یک ASP.NET کنترل هستم که چندتا تصویر و فایل همراهش ضمیمه هست.

خاصیت Build Action همه اون فایلها Embedded Resource هست و به این صورت تعریفش میکنم:



[assembly: WebResource([Assembly of project].[Folder containing resource].[Filename of resource])]


اما در هنگام استفاده از اون در یک صفحه وب تصاویر و فایلها پیدا نمیشن و با پیغام زیر مواجه میشم

The resource cannot be found.

مشکل از کجاست؟

alireza_s_84
سه شنبه 04 خرداد 1389, 18:19 عصر
سلام:
[Assembly of project] : میشه NameSpace کنترل شما
[Folder containing resource]: اگر ریسورس ها توی پوشه هستند اسم پوشه در غیر اینصورت نیازی به این قسمت نیست.
[Filename of resource]: هم میشه نام کامل عکس
در انتها هم MimeType فایل رو باید مشخص کرد.
مثال:

[assembly: WebResource("Softcam.FarsiValidatorScript.js", "application/x-javascript")]
namespace Softcam
{
[ToolboxData("<{0}:FarsiValidator runat=server></{0}:FarsiValidator>"), DefaultProperty("Text")]
public class FarsiValidator : BaseValidator
{
}
}

طبق عکس زیر این فایل جاوا اسکریپت از توی ریسورس فراخونی شده:

bachebahal_1363
سه شنبه 04 خرداد 1389, 18:36 عصر
در ضمن بر روی فایل مورد نظر هم کلیک کرده properties گرفته و پراپرتیBuild Action رو برابر با Embedded Resource قرار دهید
در مورد فایل های CSS حتما باید link مورد نظر رو به صورت دستی به صفحه در زمان render شدن کنترل اضافه کنید وگر نه Css هاتون load نمی شن
اگر توضیح در مورش خواستین بگین تا بگم

salehbagheri
سه شنبه 04 خرداد 1389, 18:42 عصر
فکر کنم مشکل من تقریباً با همین Namespace هاست.

با توجه به این تصاویر به نظر شما الان من باید چه Namespace رو به کار ببرم؟

alireza_s_84
سه شنبه 04 خرداد 1389, 19:22 عصر
فکر کنم مشکل من تقریباً با همین Namespace هاست.
با توجه به این تصاویر به نظر شما الان من باید چه Namespace رو به کار ببرم؟
شما درست بکار بردی :
<Assembly: WebResource("MyEditor.JScript.MyEditor.js", "application/x-javascript")>
برای رجیستر کردن هم به این صورت عمل کنید نباید مشکلی پیش بیاد:
ScriptManager.RegisterClientScriptResource(Me.Page , GetType(MyEditor), "MyEditor.JScript.MyEditor.js")
برای افزودن Css ها میتونید اینطوری آدرسشون رو بدست بیاری:
string CssLink = Page.ClientScript.GetWebResourceUrl(typeof(YourCon trol), "CssSource");
بعد توی یکی از رویدادها مثل RenderContents یک لینک به Css بدی:

output.Write(" <link href='" + CssLink + "' rel='stylesheet' type='text/css' />");

موفق باشید

salehbagheri
سه شنبه 04 خرداد 1389, 20:13 عصر
شما درست بکار بردی :

خب با این حال بازهم تصاویر رو نمیتونم پیدا کنم. و پیغام مذکور ظاهر میشه ...


برای افزودن Css ها میتونید اینطوری آدرسشون رو بدست بیاری:

هر آدرسی میدم بازهم همینه : The resource cannot be found !!!

alireza_s_84
سه شنبه 04 خرداد 1389, 20:46 عصر
خب با این حال بازهم تصاویر رو نمیتونم پیدا کنم. و پیغام مذکور ظاهر میشه ...
هر آدرسی میدم بازهم همینه : The resource cannot be found !!!
خب کدتون رو بذارید اینجا البته برای css باید MimeType رو بصورت text/css و برای عکسها با توجه به نوع عکس مانند image/jpeg تعریف بکنید . در نهایت اگر مشکل حل نشد حتما در نحوه خوندن ریسورس ها مشکل دارید.
انواع MimeType هم اینجا توضیح داده شده:
http://en.wikipedia.org/wiki/Internet_media_type
موفق باشید

salehbagheri
سه شنبه 04 خرداد 1389, 23:24 عصر
اینم کدش ...

البته پروژه هنوز ناقصه و ممکنه اشکالات دیگه ای هم داشته باشه ...

هدف من WebResource هاست.

alireza_s_84
چهارشنبه 05 خرداد 1389, 10:36 صبح
اینم کدش ...
البته پروژه هنوز ناقصه و ممکنه اشکالات دیگه ای هم داشته باشه ...
هدف من WebResource هاست.
من وقت نکردم نگاهی به سورس بندازم ولی این مثال کوچیک رو آپلود میکنم خودتون یه نگاهی بندازید هم عکس بکار بردم هم CSS با VB هم نوشتم که مشکلی نداشته باشی.
وب سایت توی ضمیمه رو اجرا کنی دقیقا یک Button با عکس و استایل موردنظر ما مشاهده میکنی.
موفق باشید