DCSIMG
Introduction to ASP.NET MVC 3 - Part 1 - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

Introduction to ASP.NET MVC 3 - Part 1

 

הקדמה: 
לפני כמעט חודשיים התחלתי לכתוב סדרת פוסטים לנכנסים לעולם ה - Asp.net mvc - הצהרתי שאכתוב פוסט יומי, לצערי לא כל כך עמדתי בזה :-) אשתדל מהיום לעמוד יותר בכיוון של הבטחה זו.
 
 
כפי שתארתי פוסטים אלו הם פוסטים מתגלגלים (כלומר כל פוסט תלוי בקודם), לכן מומלץ לקרוא ראשית את הפוסט הקודם ורק לאחר מכן להמשיך כאן.
 
בנוסף פוסטים אלו אינם כתובים כפי שאני כותב בדרך כלל את הפוסטים שלי, אלא בכל פוסט יש תרגיל (מבוסס על הקודם) עם הוראות וצעדים כיצד לפתור אותו - לאחר מכן (מומלץ קודם לנסות לבד) מובא הפיתרון לתרגיל עם ההסברים.
 
 
תרגיל מספר 2. - עדכון דף הלוגין מול בסיס הנתונים.
 
תיאור התרגיל: בהתבסס על התרגיל הקודם, בזמן הבדיקה יש לבדוק האם שם המשתמש והסיסמא נכונים מול ה - DB.
 
מטרת התרגיל: היכרות עם Entity Framework, עדכון בסיס הנתונים, ביצוע שאילתות LINQ.
 
שלבים:
  1. ייצרו בסיס נתונים חדש המכיל טבלת Users עם מספר עמודות (Id, Email, Name, password, Age) עמודת Id חייבת להיות מפתח ראשי ומוגדרת כ – Identity.
  2. הוסיפו לפרוייקט פריט מסוג Ado.net entity model, בעזרת ה – wizard הוסיפו את הטבלה החדשה.
  3. שנו את ה – controller שבודק האם שם המשתמש והסיסמא נכונים לשאילתת LINQ מול Entity Framework.
 

 
פיתרון:
את דוגמת הקוד ניתן להוריד מכאן.
 
פתחו את ה - Sql Server Managment Studio, הוסיפו בסיס נתונים חדש בעזרת לחיצה ימנית על Databases ולחיצה על New Database.
 
תנו שם כלשהו לבסיס הנתונים ולחצו על OK.
 
לאחר מכן גשו לבסיס הנתונים החדש שנוצר והוסיפו טבלה חדשה לפי ההוראות לעיל.
 
הנה הסקריפט לייצור הטבלה.
 

SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO

 

CREATE TABLE [dbo].[User](

[Id] [int] IDENTITY(1,1) NOT NULL,

[Name] [nvarchar](50) NOT NULL,

[Age] [int] NOT NULL,

[Passsord] [nvarchar](50) NOT NULL,

[Email] [nvarchar](50) NOT NULL,

 CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED

(

[Id] ASC

)

) ON [PRIMARY]

 
 
לאחר שהטבלה מוכנה, בפרוייקט הקודם ב - Visual Studio הוסיפו פריט חדש מסוג Entity Framework, ובחרו ב - Generate model from database, ובחרו את בסיס הנתונים שזה עתה יצרנו.
 
כעת גשו ל - StartController במתודת Index ושנו את המימוש לקוד הבא:
 

[HttpPost]

public ActionResult Index(string name, string password)

{

    if (name == null || name.Trim() == string.Empty || password == null || password.Trim() == string.Empty)

    {

        ViewBag.Error = "Parameters required";

        return View();

    }

 

    using (var context = new DatabaseEntities())

    {

        if (!context.Users.Any(x => x.Name == name && x.Password == password))

        {

            ViewBag.Error = "User name or password incorrect";

            return View();

        }

    }

 

    return View("Welcome");

}

 
 
במקום לבדוק בצורה סטטית את השם והסיסמא, נייצר מופע של DatabaseEntities (שזה השם שנתתי ל - Model) נבדוק האם קיים שם שם משתמש וסיסמא (כמובן שנדאג להכניס ידנית מידע לבסיס הנתונים).
 
ההבדל המרכזי בין הקוד הסטטי לקוד מול ה - EF, הוא יצירת מופע של המודל ושימוש במתודת Any שמקבלת כפרמטר תנאי כלשהו ומחזירה משתנה בולייאני האם התנאי קיים ב - DB.
 
 
בפוסט זה אין הרבה מה ללמוד בעולם ה - MVC, אך הוא הכנה לקראת הפוסטים הבאים בהם נרצה להוסיף דף רישום בו נוכל מתד הלקוח להרשם למערכת.
פורסם: Apr 20 2012, 05:36 PM by Shlomo | with 3 comment(s)
תגים:, , ,

תוכן התגובה

מורן כתב/ה:

תודה רבה על הפוסט, אשמח לקרוא עוד פוסטים בנושא. קשה מאד להיכנס ל MVC  בלי הדרכה

# April 27, 2012 1:16 PM

שלמה גולדברג (הרב דוטנט) כתב/ה:

בהמשך לפוסטים שיכניסו אתכם לעולם ה - Asp.net MVC, נמשיך לפתור תרגילים כדי ללמוד את הטכנולוגיה. תרגיל

# April 29, 2012 11:32 PM

תודה כתב/ה:

אם אפשר לתת הסבר יותר מעמיק

יותר מפורט עם דוגמאות שונות

תודה רבה

# November 8, 2012 1:29 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 3 and 4 and type the answer here:


Enter the numbers above: