پیاده سازی بازی Mind Reader با استفاده از WCF و AngularJS در MVC

شنبه 24 بهمن 1394

در این مقاله نحوه ایجاد بازی مسابقه ذهن خوان(Mind Reader Quiz) را با استفاده از AngularJS و سرویس WCF Rest آموزش می دهیم.

پیاده سازی بازی Mind Reader با استفاده از WCF و AngularJS در MVC

بازی Mind Reader Quiz چگونه کار می کند؟

Mind Reader Quiz یک بازی است که کاربر می تواند نام یکی از افراد در لیست را به خاطر بسپارد و توسط سوالاتی که پرسیده می شود برنامه، نام آن شخص را حدس می زند. در این بازی آنلاین تعدادی سوال وجود دارد که فقط پاسخ های بله یا خیر دارندکه کاربر با توجه به سوال پرسیده شده آنها را پاسخ می دهد. بسته به پاسخ کاربر سیستم در نهایت شخصی که در ذهن کاربر است را پیدا کرده و نتیجه را نشان می دهد.

 در صورت تمایل میتوانید به صورت رایگان آموزش WCF به همراه پروژه عملی را در سایت تاپ لرن مشاهده کنید .

شما می توانید فرد مورد نظر خود را از لیست نشان داده شده انتخاب کنید. شخص مورد نظر می تواند خواننده بازیگر یا ورزشکار باشد. سپس از شما سوالاتی پرسیده خواهد شد که پاسخ های بله یا خیر را به آنها می دهید. در نهایت سیستم نام شخص مورد نظر را به شما نشان می دهد.

در ادامه مراحل ایجاد این برنامه را به شما نشان می دهیم.

مراحل کار به شرح زیر است:

ایجاد سرویس WCF Rest و بازیابی داده از پایگاه داده.

نصب Angular JS در اپلیکیشن MVC

نحوه ایجاد اپلیکیشن Angular JS برای ایجاد Master Detail Grid

نحوه استفاده از سرویس WCS در Angular JS برای ایجاد بازی آنلاین Mind Reader

در ادامه  می توانیم برخی اصول اولیه و رفرنس ها را برای Windows Communication Foundation (WCF) را مشاهده کنیم. WCF در واقع یک فریم ورک برای ساخت اپلیکیشن های سرویس گرا می باشد.

اپلیکیشن های سرویس گرا

با استفاده از یک پروتکل، سرویس می تواند در سطح شبکه به اشتراک گذاشته شده و مورد استفاده قرار گیرد.

برای مثال کار روی یک پروژه را مثال می زنیم که در آن باید یک تابع پایگاه داده مشترک ایجاد کرد و این توابع باید در پروژه های متعدد استفاده شود، این پروژه ها در مکانهای مختلف قرار دارند و از طریق اینترنت با هم در تماس هستند. در این صورت ما می توانیم یک سرویس WCF ایجاد کرده و می توانیم تمام توابع پایگاه داده مشترک را در کلاس WCF service خود بنویسیم. همچنین می توانیم WCF خود را در IIS مستقر کرده و URL را در اپلیکیشن خود در توابع پایگاه داده انجام دهیم. در بخش کد نشان می دهیم که چگونه می توان یک سرویس WCF REST ایجادکرد و از آن در اپلیکیشن Angular JS استفاده کرد.

Angular JS

در اینجا باید با مفاهیم Model، View، View Model (MVVM) آشنا باشیم. Angular JS یک فریم ورک جاوا اسکریپتی است که صرفا بر اساس HTML، CSS و جاوا اسکریپت می باشد.

الگوی Model View Whatever (MVW) در Angular JS بسیار شبیه به الگو های MVC و MVVM می باشد. در این نمونه برنامه  ما از Model، View و Service استفاده کرده ایم. در قسمت کد نشان می دهیم که چگونه Angular JS را در برنامه نصب و ایجاد کنیم.

قسمت کد:

ایجاد پایگاه داده و جدول

ما فایل اسکریپت پایگاه داده را در این مقاله ضمیمه کرده ایم آن را در SQL SERVER اجرا کرده و جداول استفاده شده ایجاد می شوند.

-- =============================================   
-- Author : Shanu   
-- Create date : 2015-03-16   
-- Description : To Create Database,Table and Sample Insert Query   
-- Latest   
-- Modifier : Shanu   
-- Modify date : 2015-03-16   
-- =============================================  
--Script to create DB,Table and sample Insert data  
USE MASTER  
GO  
-- 1) Check for the Database Exists .If the database is exist then drop and create new DB  
IF EXISTS (SELECT [name] FROM sys.databases WHERE [name] = 'MindReader' )  
DROP DATABASE MindReader  
GO  
  
CREATE DATABASE MindReader  
GO  
  
USE MindReader  
GO  
  
-- 1) //////////// Professional_Type table  
-- Create Table Professional_Type ,This table will be used to store the details like Professional type as Sports,Bollywood Movie Star,kollywood Movie Star  
  
IF EXISTS ( SELECT [name] FROM sys.tables WHERE [name] = 'Professional_Type' )  
DROP TABLE Professional_Type  
GO  
  
CREATE TABLE Professional_Type  
(  
Profes_ID VARCHAR(10) NOT NULL,  
Profes_Type VARCHAR(50)  
CONSTRAINT [PK_Professional_Type] PRIMARY KEY CLUSTERED   
(   
[Profes_ID] ASC   
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]   
) ON [PRIMARY]   
  
GO  
-- Insert the sample records to the Character_Type Table  
Insert into Professional_Type(Profes_ID,Profes_Type) values('1','Sports')  
Insert into Professional_Type(Profes_ID,Profes_Type) values('2','Bollywood Movie Star')  
Insert into Professional_Type(Profes_ID,Profes_Type) values('3','kollywood Movie Star')  
  
-- 1) END //  
  
  
-- 2) //////////// Character_type table  
-- Create Table Character_Type ,This table will be used to store the details like Character type as Cricket,Bollywood Actor,kollywood Actor  
  
IF EXISTS ( SELECT [name] FROM sys.tables WHERE [name] = 'Character_Type' )  
DROP TABLE Character_Type  
GO  
  
CREATE TABLE Character_Type  
(  
Char_ID VARCHAR(10) NOT NULL,  
Profes_ID VARCHAR(10) NOT NULL CONSTRAINT fk_Professional_Type FOREIGN KEY REFERENCES Professional_Type,  
Char_Type VARCHAR(50)  
CONSTRAINT [PK_Character_Type] PRIMARY KEY CLUSTERED   
(   
[Char_ID] ASC   
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]   
) ON [PRIMARY]   
GO  
-- Insert the sample records to the Character_Type Table  
Insert into Character_Type(Char_ID,Profes_ID,Char_Type) values('1','1','Cricket')  
Insert into Character_Type(Char_ID,Profes_ID,Char_Type) values('2','2','Bollywood Actor')  
--Insert into Character_Type(Char_ID,Profes_ID,Char_Type) values('3','2','Bollywood Actress')  
Insert into Character_Type(Char_ID,Profes_ID,Char_Type) values('4','3','kollywood Actor')  
--Insert into Character_Type(Char_ID,Profes_ID,Char_Type) values('5','3','kollywood Actress')  
-- 2) END //  
  
  
-- 3) //////////// Character_Name  
-- Create Table Character_Name ,This table will be used to store the details of Character Names  
  
IF EXISTS ( SELECT [name] FROM sys.tables WHERE [name] = 'Character_Name' )  
DROP TABLE Character_Name  
GO  
  
CREATE TABLE Character_Name  
(  
Char_Name_ID VARCHAR(10) NOT NULL,  
Char_ID VARCHAR(10) NOT NULL CONSTRAINT fk_Character_Type FOREIGN KEY REFERENCES Character_Type,  
Char_Name VARCHAR(50),  
Char_Status VARCHAR(20)  
CONSTRAINT [PK_Char_Name] PRIMARY KEY CLUSTERED   
(   
[Char_Name_ID] ASC   
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]   
) ON [PRIMARY]   
GO  
-- Insert the sample records to the Character_Type Table  
--Sports  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('1','1','Sachin Tendulkar','Past')  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('2','1','Sunil Gavaskar' ,'Past')  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('3','1','Mohammed Azharuddin','Past')  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('4','1','Mahender Singh Dhoni','Present')  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('5','1','Shikhar Dhawan','Present')  
--Bollywood Actor  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('6','2','Amitabh Bachchan','Present')  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('7','2','Shah Rukh Khan' ,'Present')  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('8','2','Aamir Khan','Present')  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('9','2','Salman Khan','Present')  
  
--kollywood Actor  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('10','4','Rajini Kanth','Present')  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('11','4','Ajith Kumar' ,'Present')  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('12','4','Kamala Hasan','Present')  
Insert into Character_Name(Char_Name_ID,Char_ID,Char_Name,Char_Status) values('13','4','Vijay','Present')  
  
-- 3) END //  
  
--//test Select  
--select * from Professional_Type  
--select * from Character_Type  
--select * from Character_Name  
  
--////end test select  
  
-- 4) //////////// Questions  
-- Create Table Questions ,This table will be used to store the details of Character Names  
  
IF EXISTS ( SELECT [name] FROM sys.tables WHERE [name] = 'Questions' )  
DROP TABLE Questions  
GO  
  
CREATE TABLE Questions  
(  
Question_ID VARCHAR(10) NOT NULL,  
Char_Name_ID VARCHAR(10) NOT NULL CONSTRAINT fk_Character_Name FOREIGN KEY REFERENCES Character_Name,  
Question VARCHAR(300),  
Answer VARCHAR(100)  
CONSTRAINT [PK_Questions] PRIMARY KEY CLUSTERED   
(   
[Question_ID] ASC   
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]   
) ON [PRIMARY]   
GO  
-- Insert the sample records to the Character_Type Table  
--Sports  
--// Sachin  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('1','1','Is he Present Player?','No')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('2','1','Is he born in Mumbai, Maharastra?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('3','1','Is he also called as nick name Little Master?','Yes')  
  
--// Sunil Gavaskar   
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('4','2','Is he Present Player?','No')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('5','2','Is he born in Mumbai, Maharastra?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('6','2','Is he also called as nickname Sunny?','Yes')  
  
--// Mohammed Azharuddin  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('7','3','Is he Present Player?','No')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('8','3','Is he born in Hyderabad, Andhra Pradesh?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('9','3','Is he also called as nickname Ajju?','Yes')  
  
--// Mahender Singh Dhoni  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('10','4','Is he Present Player?','Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('11','4','Is he born in Ranchi, Jharkhand?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('12','4','Is he also called as nickname Mahi?','Yes')  
  
--// Shikhar Dhawan  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('13','5','Is he Present Player?','Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('14','5','Is he born in Delhi?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('15','5','Is he also called as nickname Gabbar?','Yes')  
  
--Bollywood Actor  
--// Amitabh Bachchan  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('16','6','Is Your Actor Born in Allahabad, Uttar Pradesh?','Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('17','6','Is Your Actor Father Was a Hindi Poet?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('18','6','Is your Actor married to a Actress named Jaya Bhaduri?','Yes')  
  
--// Shah Rukh Khan  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('19','7','Is your Actor born in New Delhi?','Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('20','7','Is one of his Famous film runs in a Theatre for nearly 20 Years?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('21','7','Is your Actor is called as King Khan?','Yes')  
  
--// Aamir Khan  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('22','8','Is your Actor born in Mumbai?','Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('23','8','Is his father was a producer?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('24','8','Is he acted in a movie which has Cricket Matches and that movie got so many awards?','Yes')  
  
--// Salman Khan  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('25','9','Is your Actor born in Indore?','Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('26','9','Is his father was a screenwriter?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('27','9',') Is your Actor brothers name is Arbaaz khan?','Yes')  
  
--kollywood Actor  
--// Rajini Kanth  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('28','10','Is your Actor born in Karnataka?','Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('29','10','Is your Actor is called as Super Star?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('30','10','Is your Actor is called as Thalapathy?','Yes')  
  
--// Ajith Kumar  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('31','11','Is Your Actor Born in Hyderabad?','Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('32','11','Is Your Actor Motor Bike racer?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('33','11','Is your Actor nick name is Thala?','Yes')  
  
--// Kamala Hasan  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('34','12','Is your Actor born in Paramakudi?','Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('35','12','Is your Actor received padma shri award during 1990?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('36','12','Is your Actor acted in a file with 10 Characters Roles?','Yes')  
  
--// Vijay  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('37','13','Is your Actor born in Chennai?','Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('38','13','Is his father producer/Director?' ,'Yes')  
Insert into Questions(Question_ID,Char_Name_ID,Question,Answer) values('39','13','Is your Actor Called as Ilaya Thalapathy?','Yes')  
  
-- 4) END //  
  
--//test Select  
select * from Professional_Type  
select * from Character_Type  
select * from Character_Name  
select * from Questions order by Question_ID,Char_Name_ID  
--////end test select  
--// this is sample join query which i will be used in WCF function for Linq query  
select A.Question_ID,  
A.Char_Name_ID,  
B.Char_ID,  
A.Question,  
A.Answer,   
B.Char_Name,  
B.Char_Status  
FROM  
Questions A   
Inner JOIN Character_Name B  
ON A.Char_Name_ID=B.Char_Name_ID   
WHERE   
B.Char_ID='1'  
order by cast(A.Question_ID as INT) 

ایجاد سرویس WCF REST

در اینجا Visual Studio خود را باز کرده و "File" -> "New" -> "Project را انتخاب و WCF Service Application را بزنید و نام آن را WCF service قرار داده و سپس بر روی OK کلیک کنید.

زمانی که ما WCF Service را ایجاد می کنیم می توانیم IService.CS و Service1.svc را در Solution Explorer را به صورت زیر ببینیم.

 در IService.CS می توانیم 3 قرارداد به صورت پیش فرض به صورت زیر مشاهده کنیم:

[ServiceContract] متدها یا هرنوع عملگر در دسترس برای سرویس را توصیف می کند. این قرارداد سرویس یک اینترفیس است و متدها می توانند داخل این سرویس با استفاده از صفت Operation Contract اعلان شوند.

[OperationContract] شبیه به وب سرویس [WEBMETHOD] می باشد.

[DataContract] تبادل داده ها بین کلاینت و سرویس را توصیف می کند.

[ServiceContract]

کد زیر به طور اتوماتیک برای تمام فایل های IService.CS ایجاد می شود. ما می توانیم کد خود را به صورت زیر بنویسیم.

public interface IService1  
{  
  
    [OperationContract]  
    string GetData(int value);  
  
    [OperationContract]  
    CompositeType GetDataUsingDataContract(CompositeType composite);  
  
        // TODO: Add your service operations here  
}  
    // Use a data contract as illustrated in the sample below to add composite types to service operations.  
    [DataContract]  
    public class CompositeType  
    {  
        bool boolValue = true;  
        string stringValue = "Hello ";  
  
        [DataMember]  
        public bool BoolValue  
        {  
            get { return boolValue; }  
            set { boolValue = value; }  
        }  
  
        [DataMember]  
        public string StringValue  
        {  
            get { return stringValue; }  
            set { stringValue = value; }  
        }  
    } 

Data Contract

در این مثال نیاز داریم که هردو نوع کاراکتر و نام کاراکتر را از پایگاه داده بگیریم، بنابراین  ما در اینجا سه قرارداد داده ای ایجاد کرده ایم:

CharacterTypeDataContract”,

“CharacterNameDataContract”

“questionAnswersDataContract

در اینجا ما کل نام ستون های جدول را به عنوان عضو داده ای تعریف کرده ایم:

public class whosInYourMinDataContract  
{  
    [DataContract]  
     public class CharacterTypeDataContract  
     {  
        [DataMember]  
        public string Char_ID { get; set; }  
  
            [DataMember]  
            public string Character_Type { get; set; }  
        }  
  
        [DataContract]  
        public class CharacterNameDataContract  
        {  
            [DataMember]  
            public string Char_Name_ID { get; set; }  
  
            [DataMember]  
            public string Char_ID { get; set; }  
  
            [DataMember]  
            public string Char_Name { get; set; }  
  
            [DataMember]  
            public string Char_Status { get; set; }  
        }  
  
        [DataContract]  
        public class questionAnswersDataContract  
        {  
            [DataMember]  
            public string Question_ID { get; set; }  
  
            [DataMember]  
            public string Char_Name_ID { get; set; }  
  
            [DataMember]  
            public string Char_ID { get; set; }  
  
            [DataMember]  
            public string Question { get; set; }  
  
            [DataMember]  
            public string Answer { get; set; }  
  
            [DataMember]  
            public string Char_Name { get; set; }  
  
            [DataMember]  
            public string Char_Status { get; set; }  
        }  
  
    } 

Service Contract 

در قرارداد عملگر می توانیم WebInvoke و WebGet را مشاهده کنیم که داده را از پایگاه داده در سرویس REST بازیابی می کند.

RequestFormat = WebMessageFormat.Json,  
                    ResponseFormat = WebMessageFormat.Json, 

در اینجا می توانیم هردو فرمت درخواست و پاسخ را ببینیم. در اینجا ما از فرمت Json استفاده کرده ایم.

JavaScript Object Notation (JSON) یک فرمت تبادل اطلاعات سبک وزن است.

UriTemplate نام متد ما است و در اینجا این متد نوعی از لیست را برمی گرداند.

در اینجا ما سه متد GetCharacterType، getCharacterNames و questionAnswers را تعریف کرده ایم. متد GetOrderMaster شغل شخص را می گیرد متد getCharacterNames نام شخص را از پایگاه داده می گیرد و متد questionAnswers تمام سوالات را از پایگاه داده واکشی می کند.

[ServiceContract]

public interface IService1  
{  
  
    [OperationContract]  
    [WebInvoke(Method = "GET",  
       RequestFormat = WebMessageFormat.Json,  
       ResponseFormat = WebMessageFormat.Json,  
       UriTemplate = "/GetCharacterType/")]  
    List<whosInYourMinDataContract.CharacterTypeDataContract> GetCharacterType();  
  
    [OperationContract]  
    [WebGet(RequestFormat = WebMessageFormat.Json,  
       ResponseFormat = WebMessageFormat.Json,  
       UriTemplate = "/getCharacterNames/")]  
    List<whosInYourMinDataContract.CharacterNameDataContract> getCharacterNames();  
  
    [OperationContract]  
    [WebInvoke(Method = "GET",  
       RequestFormat = WebMessageFormat.Json,  
       ResponseFormat = WebMessageFormat.Json,  
       UriTemplate = "/questionAnswers/{Char_ID}")]  
    List<whosInYourMinDataContract.questionAnswersDataContract> questionAnswers(string Char_ID);  
}

کد کامل Iservice.Cs

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Runtime.Serialization;  
using System.ServiceModel;  
using System.ServiceModel.Web;  
using System.Text;  
  
namespace Shanu_QuizWcfService  
{  
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.  
    [ServiceContract]  
    public interface IService1  
    {  
  
        [OperationContract]  
        [WebInvoke(Method = "GET",  
           RequestFormat = WebMessageFormat.Json,  
           ResponseFormat = WebMessageFormat.Json,  
           UriTemplate = "/GetCharacterType/")]  
        List<whosInYourMinDataContract.CharacterTypeDataContract> GetCharacterType();  
  
        [OperationContract]  
        [WebGet(RequestFormat = WebMessageFormat.Json,  
           ResponseFormat = WebMessageFormat.Json,  
           UriTemplate = "/getCharacterNames/")]  
        List<whosInYourMinDataContract.CharacterNameDataContract> getCharacterNames();  
  
        [OperationContract]  
        [WebInvoke(Method = "GET",  
           RequestFormat = WebMessageFormat.Json,  
           ResponseFormat = WebMessageFormat.Json,  
           UriTemplate = "/questionAnswers/{Char_ID}")]  
        List<whosInYourMinDataContract.questionAnswersDataContract> questionAnswers(string Char_ID);  
    }  
  
    // Use a data contract as illustrated in the sample below to add composite types to service operations.  
    public class whosInYourMinDataContract  
    {  
        [DataContract]  
        public class CharacterTypeDataContract  
        {  
            [DataMember]  
            public string Char_ID { get; set; }  
  
            [DataMember]  
            public string Character_Type { get; set; }  
        }  
  
  
        [DataContract]  
        public class CharacterNameDataContract  
        {  
            [DataMember]  
            public string Char_Name_ID { get; set; }  
  
            [DataMember]  
            public string Char_ID { get; set; }  
  
            [DataMember]  
            public string Char_Name { get; set; }  
  
            [DataMember]  
            public string Char_Status { get; set; }  
        }  
  
        [DataContract]  
        public class questionAnswersDataContract  
        {  
            [DataMember]  
            public string Question_ID { get; set; }  
  
            [DataMember]  
            public string Char_Name_ID { get; set; }  
  
            [DataMember]  
            public string Char_ID { get; set; }  
  
            [DataMember]  
            public string Question { get; set; }  
  
            [DataMember]  
            public string Answer { get; set; }  
  
            [DataMember]  
            public string Char_Name { get; set; }  
  
            [DataMember]  
            public string Char_Status { get; set; }  
        }  
  
    }  
}

اضافه کردن پایگاه داده با استفاده از ADO.NET Entity Data Model

بر روی WCF project راست کلیک کرده و Add New Item را انتخاب کنید سپس ADO.NET Entity Data Model را انتخاب و بر روی ADD کلیک کنید.

Designer from database را انتخاب و بر روی Next کلیک کنید.

بر روی New Connection کلیک کنید:

در اینجا می توانیم نام Database Server، SQL Server Authentication، User ID و پسورد را وارد کنید. ما از قبل پایگاه داده خود را به عنوان OrderManagement ایجاد کرده ایم پس بنابراین در اینجا می توانیم پایگاه داده را انتخاب و بر روی OK کلیک کنید.

حالا بر روی Next کلیک کرده و جداولی که نیاز داریم را انتخاب و بر روی Finish  کلیک می کنیم. در اینجا می توانیم ببینیم که Model بانک اطلاعاتی ما ایجاد شده است.

Service1.SVC

Service.SVC.CS اینترفیس IService را پیاده سازی و بازنویسی می کند و تمام متدهای Operation Contract را تعریف می کند. برای مثال در اینجا می توانیم ببینیم که IService1 را در کلاس Service1 پیاده سازی کرده ایم. ما یک شیئ برای مدل Entity خود ایجاد کرده ایم و در questionAnswers  از LINQ Query استفاده کرده ایم:

public class Service1 : IService1  
{  
   shanuQuizEntities OME;  
  
   public Service1()  
   {  
      OME = new shanuQuizEntities();  
   }   
  
   public List<whosInYourMinDataContract.questionAnswersDataContract> questionAnswers(string Char_ID)  
   {  
             
       var query = (from A in OME.Questions  
       join B in OME.Character_Name on A.Char_Name_ID equals B.Char_Name_ID  
       where B.Char_ID.Equals(Char_ID)  
       select new  
       {  
          A.Question_ID,  
          A.Char_Name_ID,  
          B.Char_ID,  
          A.Question,  
          A.Answer,  
          B.Char_Name,  
          B.Char_Status  
       }).ToList().OrderBy(q => Int32.Parse(q.Question_ID));  
  
  
            List<whosInYourMinDataContract.questionAnswersDataContract> questionAnswersList = new List<whosInYourMinDataContract.questionAnswersDataContract>();  
  
            query.ToList().ForEach(rec =>  
            {  
                questionAnswersList.Add(new whosInYourMinDataContract.questionAnswersDataContract  
                {  
                    Question_ID =rec.Question_ID,  
                    Char_Name_ID = rec.Char_Name_ID,  
                    Char_ID = rec.Char_ID,  
                    Question = rec.Question,  
                    Answer = rec.Answer,  
                    Char_Name = rec.Char_Name,  
                    Char_Status = rec.Char_Status  
                });  
            });  
            return questionAnswersList;  
  }   
} 

کد کامل شده Service.SVC.CS

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Runtime.Serialization;  
using System.ServiceModel;  
using System.ServiceModel.Web;  
using System.Text;  
using Shanu_QuizWcfService.Model;  
namespace Shanu_QuizWcfService  
{  
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.  
    // NOTE: In order to launch WCF Test Client for testing this service, please select Service1.svc or Service1.svc.cs at the Solution Explorer and start debugging.  
    public class Service1 : IService1  
    {  
        shanuQuizEntities OME;  
  
        public Service1()  
        {  
            OME = new shanuQuizEntities();  
        }  
  
        public List<whosInYourMinDataContract.CharacterTypeDataContract> GetCharacterType()  
        {  
            var query = (from a in OME.Character_Type  
                         select a).Distinct();  
  
            List<whosInYourMinDataContract.CharacterTypeDataContract> CharacterTypeList = new List<whosInYourMinDataContract.CharacterTypeDataContract>();  
  
            query.ToList().ForEach(rec =>  
            {  
                CharacterTypeList.Add(new whosInYourMinDataContract.CharacterTypeDataContract  
                {  
                    Char_ID = rec.Char_ID,  
                    Character_Type = rec.Char_Type  
                });  
            });  
            return CharacterTypeList;  
        }  
        public List<whosInYourMinDataContract.CharacterNameDataContract> getCharacterNames()  
        {  
  
            List<whosInYourMinDataContract.CharacterNameDataContract> CharacterNameList = new List<whosInYourMinDataContract.CharacterNameDataContract>();  
  
            try  
            {  
                 
                var query = (from a in OME.Character_Name  
                             select a).ToList().OrderBy(q => Int32.Parse(q.Char_Name_ID));  
  
  
                query.ToList().ForEach(rec =>  
                {  
                    CharacterNameList.Add(new whosInYourMinDataContract.CharacterNameDataContract  
                    {  
                        Char_Name_ID = rec.Char_Name_ID,  
                        Char_ID = rec.Char_ID,  
                        Char_Name = rec.Char_Name,  
                        Char_Status = rec.Char_Status  
                    });  
                });  
                return CharacterNameList;  
  
  
            }  
            catch (Exception ex)  
            {  
                throw new FaultException<string>  
                       (ex.Message);  
            }  
  
        }  
  
        public List<whosInYourMinDataContract.questionAnswersDataContract> questionAnswers(string Char_ID)  
        {  
             
            var query = (from A in OME.Questions  
                         join B in OME.Character_Name on A.Char_Name_ID equals B.Char_Name_ID  
                         where B.Char_ID.Equals(Char_ID)  
                         select new  
                         {  
                             A.Question_ID,  
                             A.Char_Name_ID,  
                             B.Char_ID,  
                             A.Question,  
                             A.Answer,  
                             B.Char_Name,  
                             B.Char_Status  
                         }).ToList().OrderBy(q => Int32.Parse(q.Question_ID));  
  
  
            List<whosInYourMinDataContract.questionAnswersDataContract> questionAnswersList = new List<whosInYourMinDataContract.questionAnswersDataContract>();  
  
            query.ToList().ForEach(rec =>  
            {  
                questionAnswersList.Add(new whosInYourMinDataContract.questionAnswersDataContract  
                {  
                    Question_ID =rec.Question_ID,  
                    Char_Name_ID = rec.Char_Name_ID,  
                    Char_ID = rec.Char_ID,  
                    Question = rec.Question,  
                    Answer = rec.Answer,  
                    Char_Name = rec.Char_Name,  
                    Char_Status = rec.Char_Status  
                });  
            });  
            return questionAnswersList;  
        }  
        
    }  
} 

در فایل Web.Config پروژه تغییرات زیر را اعمل کنید.

تغییرات:

<add binding="basicHttpsBinding" scheme="https" /> to <add binding="webHttpBinding" scheme="http" />  

قسمتی که باید جایگزین کنیم به صورت زیر است:

</behaviors>  
   <endpointBehaviors>  
        <behavior>  
          <webHttp helpEnabled="True"/>  
        </behavior>  
    </endpointBehaviors>  
</behaviors>  

سرویس WCF را اجرا کنید.

در اینجا ما سرویس WCF Rest خود را ایجاد می کنیم. سپس آن را اجرا می کنیم.در service URL می توانیم نام متد خود را اضافه کرده و می توانیم نتیجه به صورت JSON را از پایگاه داده ببینیم.

ایجاد اپلیکیشن MVC

تا اینجا ما WCF را تکمیل کرده و حالا وقت آن است که اپلکیشن MVC Angular JS را ایجاد کنیم. ما می توانیم یک پروژه جدید به پروژه موجود خود اضافه کنیم و یک اپلیکیشن MVC web جدید ایجاد کنیم.

بر روی solution راست کلیک کرده و نام پروژه خود را وارد کنید و سپس OK رابزنید.

قالب MVC را انتخاب کنید.

حالا وقت آن است که یک سرویس WCF اضافه کرده و Angular JS را نصب کنید.

اضافه کردن سرویس WCF

بر روی Solution راست کلیک کرده و بر روی Add کلیک کرده و Service Reference را انتخاب کنید.

WCF URL خود را وارد کرده و بر روی GO کلیک کنید. در اینجا WCF URL ما به صورت http://localhost:4194/Service1.svc  می باشد.

نام مورد نظر را اضافه و بر روی OK کلیک کنید.

حالا در اینجا ما با موفقیت سرویس WCF خود را به اپلیکیشن MVC اضافه کرده ایم.

روش نصب Angular JS

بر روی پروژه راست کلیک کرده و بر روی Manage NuGet Packages کلیک کنید.

Online را انتخاب کرده و Angular JS را جستجو کرده و آن را نصب کنید.

حالا ما Angular Js خود را ایجاد می کنیم.

Modules.js

Controllers.js

Services.js

روش ایجاد فایل های اسکریپت Angular Js

بر روی پوشه Script راست کلیک کرده و فولدر خود را برای ایجاد Angular Js Model/Controller بسازید. در این فولدر اسکریپت سه فایل JavaScript ایجاد می کنیم و نام آنها را Modules.js، Controllers.js و Services,js به صورت زیر قرار می دهیم.

Modules.js

در اینجا ما رفرنس را به Angular.js JavaScript اضافه کرده و نام Angular Module را RESTClientModule قرار می دهیم.

/// <reference path="../angular.js" />   
/// <reference path="../angular.min.js" />   
  
var app;  
  
(function () {  
   app = angular.module("RESTClientModule", []);  
})();

Services.js

در اینجا ما رفرنس را به Angular.js JavaScript و Module.js خود اضافه می کنیم.

در اینجا نامی برای سرویس خود انتخاب می کنیم ما در اینجا نام AngularJs_WCFService را انتخاب کرده ایم. شما می توانید نام مورد نظر خود را انتخاب کنید اما در مورد تغییر نام در Controllers.js دقت کنید. در اینجا می توانیم در این متد ببینیم که URL را برای WCF Service URL خود ارسال کرده ایم.

/// <reference path="../angular.js" />   
/// <reference path="../angular.min.js" />   
/// <reference path="Modules.js" />   
  
app.service("AngularJs_WCFService", function ($http) {  
  
//Get Order Master Records   
   this.GetCharacterType = function () {  
   return $http.get("http://localhost:4194/Service1.svc/GetCharacterType");  
   };  
  
//Search Order Master Records   
   this.getCharacterNames = function () {  
   return $http.get("http://localhost:4194/Service1.svc/getCharacterNames/");  
   }  
  
   this.getquestionAnswers = function (Char_ID) {  
   return $http.get("http://localhost:4194/Service1.svc/questionAnswers/" + Char_ID);  
   }  
   });

Controllers.js

در اینجا رفرنس را به Angular.js JavaScript و Module.js و Services.js اضافه کرده ایم. همانند کاری که برای سرویس ها انجام می دهیم. برای کنترلر نام AngularJs_WCFController را قرار داده ایم. در کنترلر تمام business logic را انجام داده و داده را از WCF JSON به صفحه MVC HTML خود برگردانده ایم.

تعریف متغیرها

ابتدا ما تمام متغیرهای محلی که استفاده می شود را تعریف می کنیم و داده را با استفاده از $scope.date ذخیره می کنیم.

نکته : scope.finalresultCount = 3

این یک متغییر بسیار مهم است. در اینجا ما به طور پیش فرض مقدار 3 را قرار داده ایم. در این نمونه برنامه برای هر فرد سه سوال را قرار داده ایم. اگر بخواهیم تعداد سوالات را افزایش دهیم باید به طور مشابه یک Count تعریف کنیم.

متدها

Hidetables

این متد برای مخفی کردن و نشان دادن نمایش جدول TR برای بخش حرفه ی شخص می باشد و برای پاسخ به سوال و نمایش نتیجه نهایی در همان صفحه استفاده می شود.

getCharacterNames

در این متد  نام تمام افراد را از JSON گرفته ونتایج را به صفحه اصلی متصل می کنیم. در اینجا کاربر نام یک شخص را در ذهن خود انتخاب کرده و گزینه شروع را می زند.

GetCharacterType

در این متد نوع شغل شخص از JSON گرفته شده و نتیجه نهایی در صفحه خودش به صورت Radio Button نشان داده می شود.

در اینجا کاربر می تواند پاسخ سوال را به صورت بله یا خیر بدهدو دکمه submit را بزند تا سوال بعدی نمایش داده شود.

findYourAnswer

این متد سوالات را  به صورت یک به یک گرفته و سوالات را به پاسخ کاربران متصل می کند:

scope.findAnswers = function

این متد زمانی فراخوانی می شود که کاربر بر روی دکمه Submit کلیک کند. در این متد ما تمام business logic برای نمایش سوالات بعدی را انجام می دهیم  نتیجه را بررسی و نام شخص به عنوان نتیجه نهایی نمایش داده می شود.

کد کامل Controller.js

/// <reference path="../angular.js" />    
/// <reference path="../angular.min.js" />     
/// <reference path="Modules.js" />     
/// <reference path="Services.js" />     
  
  
app.controller("AngularJs_WCFController", function ($scope, $rootScope, $window, AngularJs_WCFService) {  
  
    $scope.date = new Date();  
  
    // 1) To Store the user selected Character Profession  
    $scope.CharacterID = 4;  
    $scope.CharacterType = 'kollywood Actor';  
  
    // 2) To show and Hide the Table to display  Character Type Selection and Question  
    var firstbool = true;  
    var secondbool = false;  
    var thirdbool = false;  
    // * 3) Question and Answer final Judgement Local Variables  
    $scope.Question_ID;  
    $scope.Char_Name_ID;  
    $scope.Char_ID;  
    $scope.Question;  
    $scope.Answer;  
    $scope.Char_Name;  
    $scope.Char_Status;  
    $scope.User_Selected_Result = 'Yes';  
    $scope.loopCount = 0;  
    $scope.resultCount = 0;  
    $scope.finalresultCount = 3;  
    $scope.NextStar = 0;  
    $scope.totalQuestionCount = 0;  
    $scope.QuestionIncrement = 0;  
    $scope.YourDreamStarName = "";  
    // end 3)  
  
    Hidetables()  
    function Hidetables() {  
       
        if ($scope.firstbool == false) {  
            $scope.firstbool = true;  
            $scope.secondbool = false;  
            $scope.thirdbool = true  
        }  
        else  
        {  
            $scope.firstbool = false;  
            $scope.secondbool = true;  
            $scope.thirdbool = true;  
        }      
    }  
    hideresult()  
    function hideresult() {  
        if ($scope.thirdbool == false) {  
            $scope.thirdbool = true;  
        }  
    }  
  
    GetCharacterType();  
    getCharacterNames();  
    
   
    //To Get All Records     
    function GetCharacterType() {  
  
        var promiseGet = AngularJs_WCFService.GetCharacterType();  
        promiseGet.then(function (pl) {  
            $scope.getCharacterTypeDisp = pl.data  
  
        },  
  
             function (errorPl) {  
  
             });  
    }  
     
    //To Get Student Detail on the Base of Student ID     
    function getCharacterNames() {  
        
        var promiseGet = AngularJs_WCFService.getCharacterNames();  
            promiseGet.then(function (pl) {  
                $scope.getCharacterNamesDisp = pl.data;  
                 
             //   alert(res.Char_Name);  
            },  
                 function (errorPl) {  
                 });  
        
  
    }  
    $scope.radioCheckValue = function (CharID, CharType) {  
        
        $scope.CharacterID = CharID;  
        $scope.CharacterType = CharType;  
    };  
  
   
  
    $scope.get = function () {  
       
        $scope.firstbool = true;  
        $scope.secondbool = false;  
        $scope.NextStar = 0;  
        $scope.loopCount = 0;  
        findYourAnswer();  
    }  
  
    function findYourAnswer()  
    {  
           
        var promiseGet = AngularJs_WCFService.getquestionAnswers($scope.CharacterID);  
        promiseGet.then(function (pl) {  
            $scope.questionAnswersDisp = pl.data  
  
            $scope.totalQuestionCount = $scope.questionAnswersDisp.length;  
              
              
            for (x in $scope.questionAnswersDisp) {  
  
                if (x == $scope.loopCount) {  
                   
                     
                    $scope.Question_ID = $scope.questionAnswersDisp[x].Question_ID;  
                    $scope.Char_Name_ID = $scope.questionAnswersDisp[x].Char_Name_ID;  
                    $scope.Char_ID = $scope.questionAnswersDisp[x].Char_ID;  
                    $scope.Question = $scope.questionAnswersDisp[x].Question;  
                    $scope.Answer = $scope.questionAnswersDisp[x].Answer;  
                    $scope.Char_Name = $scope.questionAnswersDisp[x].Char_Name;  
                    $scope.Char_Status = $scope.questionAnswersDisp[x].Char_Status;  
  
                    $scope.QuestionIncrement = $scope.QuestionIncrement + 1;  
  
                }  
  
            }  
  
        },  
             function (errorPl) {  
  
             });  
    }  
  
    $scope.rdoAnschk = function (chkResult) {  
        
        $scope.User_Selected_Result = chkResult;  
        
    };  
  
    $scope.findAnswers = function () {  
        
        
        if ($scope.User_Selected_Result == 'Yes')  
        {  
  
            $scope.resultCount = $scope.resultCount + 1;  
        }  
        else  
        {  
            
                 
                if ($scope.Answer == 'No') {  
                  
                        $scope.resultCount = $scope.resultCount + 1;    
                    if ($scope.NextStar > 0) {  
                        $scope.NextStar = $scope.NextStar - 1;  
                    }  
                }  
                else {  
                    if ($scope.resultCount > 0) {  
                        $scope.resultCount = $scope.resultCount - 1;  
                    }  
                    $scope.NextStar = $scope.NextStar + 1;  
                }  
                  
            
        }  
        if ($scope.NextStar == $scope.finalresultCount)  
        {  
            alert('Hope my guess was Wrong! lets start for other Star ')  
            $scope.NextStar = 0;  
        }  
        if ($scope.resultCount == $scope.finalresultCount) {  
            $scope.secondbool = true;  
            $scope.thirdbool = false;  
            $scope.YourDreamStarName = $scope.Char_Name;  
            alert('Your Dream Star in your mind is ' + $scope.YourDreamStarName)  
            return;  
        }  
  
        $scope.loopCount = $scope.loopCount + 1;  
        
        findYourAnswer();  
  
        if($scope.QuestionIncrement>= $scope.totalQuestionCount)  
        {  
            $scope.secondbool = true;  
            $scope.thirdbool = false;  
            $scope.YourDreamStarName = "Sorry My Dear Friend.All the Questions are Completed. I cont find your answer. Shall we try again"  
            alert($scope.YourDreamStarName);  
            return;  
        }  
    }  
   
  
});

بنابراین حالا ما Angular Js Module /Controlle و Service خود را ایجاد کرده ایم.

Controller و View مورد نظر را برای نمایش نتیجه ایجاد می کنیم.

اضافه کردن Controller

بر روی پوشه Controller راست کلیک کرده و Add Controller را انتخاب می کنیم و بر روی MVC 5 Controller – Empty کلیک و Add را انتخاب می کنیم.

نام کنترلر را WhosinYourMindController قرار دهید. سپس بر روی OK کلیک کنید.

اضافه کردن View

بر روی Controller Index راست کلیک کرده و Add View را انتخاب کنید.

View مربوط به Index

نام View را Index قرار دهید . در این View صفحه خود را طراحی کرده و angular.Js، Modules.js، Services.js و Controllers.js را رفرنس دهید.

در Angular JS ما از {{ }} برای bind کردن یا نمایش داده استفاده می کنیم.

در اینجا ما می توانیم ببینیم که ما در ابتدا یک جدول و برخی موارد برای جدول ها را ایجاد کرده ایم. در ابتدا در جدول ما از data-ng-controller="AngularJs_WCFController" استفاده کرده ایم  و در اینجا می توانیم ببینیم data-ng-controller برای bind کردن داده از controller به جدول HTML استفاده شده است.

با استفاده از <tbody data-ng-repeat=" detail in getCharacterNamesDisp"> می توانیم تمام رکوردها را بگیریم و و با استفاده از <td><span>{{ detail.Char_Name}}</span></td> تمام داده ها را داخل جدول ثبت کنیم.

<html data-ng-app="RESTClientModule">  
@{  
    ViewBag.Title = "Who is in Your Mind Reader";  
}  
  
  
<body>  
    <img src="~/Images/blank.gif" alt="" width="1" height="10" />  
    <table width="99%" style=" border-bottom:3px solid #3273d5;">  
        <tr>  
  
            <td width=" 250">  
                <table width="99%">  
                    <tr>  
                        <td>  
                            Welcome Mr. {{'SHANU'}} .  
  
                        </td>  
  
  
                    </tr>  
                </table>  
            </td>  
            <td class="style1" align="center">  
                <h3>Who is in Your Mind Reader Quiz  :)</h3>  
  
  
            </td>  
            <td align="right">  
                <div ng-controller="AngularJs_WCFController">  
                    Today Date is :  
                    {{date | date:'yyyy-MM-dd'}}  
                </div>  
  
            </td>  
        </tr>  
    </table>  
    <img src="~/Images/blank.gif" alt="" width="1" height="10" />  
  
    <table id="tblContainer" data-ng-controller="AngularJs_WCFController" style='width: 99%;table-layout:fixed;'>  
  
        <tr>  
  
            <td>  
                <table style=" background-color:#ECF3F4; border: solid 2px #6D7B8D; padding: 5px;width: 99%;table-layout:fixed;">  
                    <tr>  
                        <th style=" background-color:#98AFC7; border-bottom: solid 4px #FFFFFF; padding: 5px;width: 99%;table-layout:fixed;">  
                            <h3>Think Any one of your Dream Star in your mind  from the list Below.</h3>  
                        </th>  
                    </tr>  
  
                    <tbody data-ng-repeat="detail in getCharacterNamesDisp">  
  
                        <tr>  
                            <td style="  border: dashed  2px #6D7B8D; padding: 5px;width: 99%;table-layout:fixed;">  
                                <b>  <span style="color:#9F000F">{{detail.Char_Name}}</span></b>  
  
                            </td>  
                        </tr>  
  
                </table>  
  
            </td>  
  
  
  
        </tr>  
  
  
  
  
  
        </tr>  
  
    </table>  
    <img src="~/Images/blank.gif" alt="" width="1" height="10" />  
  
    <table id="tblContainers"  style='width: 20%;table-layout:fixed;' align="center">  
  
        <tr>  
  
            <td align="center">  
                <table style=" background-color:#F0F8FF;color:#566D7E; border: dashed  2px #6D7B8D; padding: 5px;width: 99%;table-layout:fixed;">  
                    <tr>  
                        <td align="center" style="color:#9F000F;">  
                            <h3>@Html.ActionLink("Get Ready to Play!", "CharacterTypeView", "WhosinYourMind")</h3>  
                        </td>  
                    </tr>  
                  </table>  
             </td>  
        </tr>  
    </table>  
  
</body>  
  
</html>  
  
<script src="~/Scripts/angular.js"></script>  
  
<script src="~/Scripts/shanuAngularScript/Modules.js"></script>  
  
<script src="~/Scripts/shanuAngularScript/Services.js"></script>  
  
<script src="~/Scripts/shanuAngularScript/Controllers.js"></script> 

View مربوط به CharacterTypeView

یک View دیگر با نام CharacterTypeView اضافه کنید. این View اصلی ما می باشد.در اینجا ما نوع شغل رادر اینجال نشان می دهیم و کاربر می تواند هر نوع شغلی را که میخواهد از صفحه index انتخاب کند. کاربر می تواند بازی را شروع کند.

<html data-ng-app="RESTClientModule">  
@{  
    ViewBag.Title = "Select Your Character Profession";  
}  
  
  
<body>  
    <img src="~/Images/blank.gif" alt="" width="1" height="10" />  
    <table width="99%" style=" border-bottom:3px solid #3273d5;">  
        <tr>  
  
            <td width=" 250">  
                <table width="99%">  
                    <tr>  
                        <td>  
                            Welcome Mr. {{'SHANU'}} .  
  
                        </td>  
  
  
                    </tr>  
                </table>  
            </td>  
            <td class="style1" align="center">  
                <h3>Who is in Your Mind Reader Quiz  :)</h3>  
  
  
            </td>  
            <td align="right">  
                <div ng-controller="AngularJs_WCFController">  
                    Today Date is :  
                    {{date | date:'yyyy-MM-dd'}}  
                </div>  
  
            </td>  
        </tr>  
    </table>  
    <img src="~/Images/blank.gif" alt="" width="1" height="10" />  
    <table width="100%" data-ng-controller="AngularJs_WCFController">  
  
        <tr ng-hide="firstbool" ng-init="Hidetables()">  
  
            <td>  
  
  
  
                <table id="tblContainer" style='width: 99%;table-layout:fixed;'>  
  
                    <tr>  
  
                        <td>  
                            <table style=" background-color:#ECF3F4; border: solid 2px #6D7B8D; padding: 5px;width: 99%;table-layout:fixed;">  
                                <tr>  
                                    <th style=" background-color:#98AFC7; border-bottom: solid 4px #FFFFFF; padding: 5px;width: 99%;table-layout:fixed;">  
                                        <h3>Select Your Character Profession which you have think in your mind.</h3>  
                                    </th>  
                                </tr>  
  
                                <tbody data-ng-repeat="detail in getCharacterTypeDisp">  
  
                                    <tr>  
                                        <td style="  border: dashed  2px #6D7B8D; padding: 5px;width: 99%;table-layout:fixed;">  
                                            <b>  
                                                <input type="radio" name="rdoCharType" ng-model="detail.Character_Type" value="detail.Character_Type" ng-value="detail.Character_Type" ng-click="radioCheckValue(detail.Char_ID,detail.Character_Type)" />  
                                                <span style="color:#9F000F">{{detail.Character_Type}}</span>  
                                            </b>  
                                        </td>  
                                    </tr>  
  
                            </table>  
  
                        </td>  
  
  
  
                    </tr>  
                    <tr>  
                        <td>  
  
                            <img src="~/Images/blank.gif" alt="" width="1" height="10" />  
  
                            <table id="tblContainers" style='width: 60%;table-layout:fixed;' align="center">  
  
                                <tr>  
  
  
  
                                    <td align="center">  
  
                                        <table style=" background-color:#F0F8FF;color:#566D7E; border: dashed  2px #6D7B8D; padding: 5px;width: 99%;table-layout:fixed;">  
                                            <tr>  
                                                <td align="center" style="color:#566d7e;">  
  
                                                    You have selected <div><h3 style="color:#9F000F">{{CharacterType}} </h3></div>  as you have think in mind.  
                                                    Now its time to read your mind lets start now.<br />  
  
                                                    <h4> Time to Begin :)"</h4>  
                                                    <input type="button" id="Detail" value="lets Start" data-ng-click="get()" style="background-color:#2B547E;color:#FFFFFF;width:100px;height:30px">  
                                                </td>  
                                            </tr>  
                                        </table>  
                                    </td>  
                                </tr>  
                            </table>  
                        </td>  
                    </tr>  
  
                </table>  
            </td>  
  
        </tr>  
        <tr ng-hide="secondbool" ng-init="Hidetables()">  
            <td>  
                <table>  
                    <tr>  
                        <td>  
  
                            <table id="tblContainer" style='width: 100%;table-layout:fixed;'>  
  
                                <tr>  
  
                                    <td align="right">  
                                        <table id="tblContainers" style='width: 20%;table-layout:fixed;' align="right">  
  
                                            <tr>  
  
                                                <td align="center">  
                                                    <table style=" background-color:#F0F8FF;color:#566D7E; border: dashed  2px #6D7B8D; padding: 5px;width: 99%;table-layout:fixed;">  
                                                        <tr>  
                                                            <td align="center" style="color:#566d7e;">  
                                                                <div>You have selected <h4 style="color:#9F000F">{{CharacterType}} </h4></div>  
                                                            </td>  
                                                        </tr>  
                                                    </table>  
                                                </td>  
                                            </tr>  
                                        </table>  
  
  
                                    </td>  
                                </tr>  
                                <tr>  
                                    <td>  
                                        <table style=" background-color:#ECF3F4; border: solid 2px #6D7B8D; padding: 5px;width: 100%;table-layout:fixed;">  
                                            <tr>  
                                                <th style=" background-color:#98AFC7; border-bottom: solid 4px #FFFFFF; padding: 5px;width: 99%;table-layout:fixed;">  
                                                    <h3>Answer Yes or No to the below Questions ,this will help me to read your mind Star !.</h3>  
                                                </th>  
                                            </tr>  
  
  
  
                                            <tr>  
                                                <td style="  border: dashed  2px #6D7B8D; padding: 5px;width: 99%;table-layout:fixed;">  
                                                    <b>  
                                                        {{Question}}  
                                                    </b>  
                                                    <br />  
                                                    <input type="radio" name="rdoAns" value="Yes" ng-click="rdoAnschk('Yes')" checked='checked' />YES  
                                                    <input type="radio" name="rdoAns" value="No" ng-click="rdoAnschk('No')" />No  
  
                                                </td>  
                                            </tr>  
  
                                        </table>  
  
                                    </td>  
  
                                </tr>  
                            </table>  
                    <tr>  
                        <td>  
                            <img src="~/Images/blank.gif" alt="" width="1" height="10" />  
  
                        </td>  
                    </tr>  
                    <tr>  
  
  
  
                        <td align="center">  
  
                            <table style=" background-color:#F0F8FF;color:#566D7E; border: dashed  2px #6D7B8D; padding: 5px;width: 14%;table-layout:fixed;">  
                                <tr>  
                                    <td align="center" style="color:#566d7e;">  
                                        <input type="button" id="Detail" value="Submit" data-ng-click="findAnswers()" style="background-color:#2B547E;color:#FFFFFF;width:100px;height:30px">  
                                    </td>  
                                </tr>  
                            </table>  
                        </td>  
                    </tr>  
  
  
  
  
                </table>  
  
            </td>  
        </tr>  
        <tr ng-hide="thirdbool" ng-init="hideresult()">  
            <td>  
                <table>  
                    <tr>  
                        <td align="center">  
  
                            <table style=" background-color:#F0F8FF;color:#566D7E; border: dashed  2px #6D7B8D; padding: 5px;width: 99%;table-layout:fixed;">  
                                <tr>  
                                    <td align="center" style="color:#566d7e;">  
  
                                        <div>  I hope so this is your Star <h3 style="color:#9F000F">{{YourDreamStarName}} </h3> whom you think in your Mind. </div>   
                                          
                                        <h3 style="color:#566D7E;">@Html.ActionLink("Shall we play again :)", "Index", "WhosinYourMind")</h3>  
                                    </td>  
                                </tr>  
                            </table>  
                        </td>  
                    </tr>  
                </table>  
            </td>  
        </tr>  
    </table>  
  
</body>  
  
</html>  
  
<script src="~/Scripts/angular.js"></script>  
  
<script src="~/Scripts/shanuAngularScript/Modules.js"></script>  
  
<script src="~/Scripts/shanuAngularScript/Services.js"></script>  
  
<script src="~/Scripts/shanuAngularScript/Controllers.js"></script> 

برنامه را اجرا کنید.

در اینجا بعد از کلیک بر روش شروع به صفحه بعدی می رویم

حالا نام شخص مورد نظر را به خاطر بسپارید:

در اینجا شما می توانید از لیست زیر شغل شخص را انتخاب کنید و سپس بازی را شروع کنید.

در مرحله بعد، می توانیم به سوالات با پاسخ بله یا خیر جواب دهیم و بعد Submit را بزنیم تا سوال بعدی نمایش داده شود.

توجه کنید که ما در اینجا فقط 3 سوال را برای هر شخص در نظر گرفته ایم . می توانید سوالات را بر اساس نیاز خود به پایگاه داده اضافه کنید و در Controler.js تعداد سوالات را به طور مشابه در “scope.finalresultCount = 3” اضافه کنید.

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید