الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أستفسار عن wcf و الـ ASP.NET mvc

بدأه D a r K T o u c h في 9 أبريل 2012 · 5 رد · 955 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاتة

أخواني في الأونة الاخيرة تعامل مع تقنيات تخص بـ client side مثل jquery و مكتبة Knockout وفي الحقيقة يتيحون تجربة ممتازة للتعامل مع الموقع من ناحية الـ client side

وكما نعلم أن بإستطاعتنا كتابة Actions في الـ MVC تستطيع أرجاع الناتج على صيغة الـ json والتي لها دور مع التقنيات التي ذكرتها سابقات وبالتحديد عند الأستدعاء بالـ Ajax

لكن واجهتني بعض المشاكل و أود الأستفسار عنها.

من المعروف يمكننا أستخدام Attribute يدعى ChildActionOnly والذي بدورة يساعدنا على جعل هذا الـ Action يستدعى فقط بواسطة Html.Action Helper, لكن عندما أردت أستخدامه مع الـ Ajax لم أتوصل للطريقة التي تمكننني من التواصل مع هذا النوع من الـ Action

و أيضا لاحظت بعض المقالات في الأنترنت تتحدث عن أستخدام الـ WCF ورأيت بالكثرة عندما يكون الأمر متعلق بأستخدام الـ client side operation فلا أعلم هل لا بد أن أتعلم طريقة أستخدام الـ wcf أو أنها مجرد خيار متاح ويوجد غيرة؟

My Latest

Hello Entity Framework Code First

--------------------

#2

السلام عليكم ,

ماذا تريد ان تفعل ؟ .

Ahmed Moosa

Microsoft Community Contributor | MCC

Microsoft Certified Professional Developer | MCPD

Microsoft Certified Technology Specialist | MCTS

Senior .NET Developer

.Net Trainer

English blog : http://weblogs.asp.net/ahmedmoosa/

مدونة عربى : http://ahmedmoosa.wordpress.com/

#3
Ahmed Moosa كتب:

السلام عليكم ,

ماذا تريد ان تفعل ؟ .

في الحقيقة أخ أحمد أنا محتار من بعض الأشياء فكما ذكرت سابقا بأني أستيطع أرجاع ناتج الـ action في الـ mvc على صيغة json لكن ما يحيرني هو عندما يقوم المستخدم بكتابة الرابط الى هذا الـ action في المتصفح يستطيع الحصول على النتائج أيضا..

ولهذا السبب حاولت أستخدام الـ attribute التي يدعى ChildActionOnly لتفادي عدم تنفيذ الـ action عند كتابتة في المتصفح. لكن عندما أتيت للتعامل معه بواسطة دالة الـ ajax الموجودة في الـ jquery لم أستطع الوصول له.. بعمنى آخر لم أتمكن من معرفة الطريقة التي تجعلني أصل له, وكما تعلم يوجد هناك Helper أستطيع أستخدامها لتحقيق ما أريد.

وأيضا في ما يتعلق بـ wcf رأيت كثير من المقالات على الانترنت تتحدث عن أستخدام الـ wcf services عندما يريدون أستخدام الـ ajax على سيبيل المثال, فأريد معرفة هل لا بد لي أن أتعلم الـ wcf لو أنها مجرد خيار يستخدمة المبرمجين بين عده خيارات ..

أتمنى وضحت ما أريد

My Latest

Hello Entity Framework Code First

--------------------

#4

الحقيقة انت لم توضح ............ لقد أعدت الكلام :-) , وسأجيب بما لدى بشكل عام .

لنتحدث عن Json هو JavaScript Object Notation , والهدف منه إرسال Object أياً كان نوعه إلى الClient .

فالمنتظر منه ليس كود Html وإنما المنتظر منه Object:- مثال string , int,Customer,Car أو List . وعلى هذا , فإننا نقوم بإستقبال هذا الـObject ونتعامل معه . فالمفترض منك أن تستقبله من خلال دالة داخل JavaScript وليكن $.getJSON الموجودة ضمن Jquery . ماذا ستفعل معه بعد إستقباله, هذا يعود إليك .

مثال على ذلك :-

	$(document).ready(function () {
    	$("#getbtn").click(function () {
        	$.getJSON("Home/getdata", {}, function (data) {
            	alert(data);
        	});
    	});
	});

وهذا هو الـButton المستخدم فى عملية الإستدعاء:-

<input type="button" id="getbtn" name="getbtn" value="Get Data " />

أما بخصوص ChildActionOnly , فهذا ليس مكانه , ولكن يمكن أن نستبدله بـ IsAjaxRequest , وبالطبع لا تذهب لتبحث عن IsAjaxRequest , لإنه ليس موجود بالفعل , بل نحن من سيقوم بإنشائه , وإليك الدالة :-

  [IsAjaxRequest]
    	public ActionResult getData()
    	{
        	List<string> mylist = new List<string>
        	{
            	"Ahmed", "Ali", "Islam" 
        	};
        	return Json(mylist,JsonRequestBehavior.AllowGet );
    	}

وكما ذكرنا أن IsAjaxRequest هى من إنشائنا , فإليك الكود المستخدم لبناء :-

using System.Web.Mvc;
namespace AreatTestWithGlobal.Filters
{
	public class IsAjaxRequest : System.Web.Mvc.ActionMethodSelectorAttribute
	{
    	public override bool IsValidForRequest(System.Web.Mvc.ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
    	{
        	return controllerContext.RequestContext.HttpContext.Request.IsAjaxRequest();
    	}
	}

بالتوفيق إن شاء الله .

تم تعديل هذه المشاركة بواسطة Ahmed Moosa في 10 أبريل 2012 في 22:20

1

Ahmed Moosa

Microsoft Community Contributor | MCC

Microsoft Certified Professional Developer | MCPD

Microsoft Certified Technology Specialist | MCTS

Senior .NET Developer

.Net Trainer

English blog : http://weblogs.asp.net/ahmedmoosa/

مدونة عربى : http://ahmedmoosa.wordpress.com/

#5
اقتباس
الحقيقة انت لم توضح ............ لقد أعدت الكلام :-) , وسأجيب بما لدى بشكل عام .

Oops! :wacko:

فعلاً أخ أحمد المثال الذي وضعتة هذا ما كنت أتحدث عنه في الجزء الأول من السؤال :D

في المثال بعد تحديد نوع Request هل بإمكاني جعله يتوجه إلى صفحة خطأء مخصصة على سبيل المثال ؟

وفي ما يتعلق بـ WCF بإختصار, هل لابد أن اتعلم طريقة التعامل معها؟

1

My Latest

Hello Entity Framework Code First

--------------------

#6
D a r K T o u c h كتب:

Oops! :wacko:

فعلاً أخ أحمد المثال الذي وضعتة هذا ما كنت أتحدث عنه في الجزء الأول من السؤال :D

في المثال بعد تحديد نوع Request هل بإمكاني جعله يتوجه إلى صفحة خطأء مخصصة على سبيل المثال ؟

وما الذى يمنعك .

اقتباس
وفي ما يتعلق بـ WCF بإختصار, هل لابد أن اتعلم طريقة التعامل معها؟

لا يشترط معرفتها لهذا الأمر .

1

Ahmed Moosa

Microsoft Community Contributor | MCC

Microsoft Certified Professional Developer | MCPD

Microsoft Certified Technology Specialist | MCTS

Senior .NET Developer

.Net Trainer

English blog : http://weblogs.asp.net/ahmedmoosa/

مدونة عربى : http://ahmedmoosa.wordpress.com/

مواضيع مشابهة