ویرایش ، حذف و درج اطلاعات در sql server در ASP.NET MVC

آموزش ASP.NET MVC
آموزش ASP.NET MVC

با سلام خدمت همراهان سایت میزفا ، با یکی دیگر از مقالات آموزشی ASP.NET MVC در خدمت شما هستم. در این مقاله آموزشی قصد داریم نحوه ارتباط با بانک اطلاعاتی SQL SERVER برای درج اطلاعات ، ویرایش اطلاعات و حذف اطلاعات از دیتابیس را به شما آموزش دهم.

Insert ، Update ، Delete کردن اطلاعات در بانک اطلاعاتی SQL SERVER در ASP.NET MVC

این مقاله آموزشی را با یک مثال به پیش می بریم فرض کنید که میخواهیم اطلاعات دانش آموزان یک مدرسه را در بانک اطلاعاتی SQL SERVER ذخیره کنیم ابتدا باید یک مدل برای این پروژه تعریف کنیم.

ایجاد Model پروژه

در پوشه Models ، یک کلاس به نام StudentDB ، ویا نام دلخواه خودتان ایجاد کنید سپس فیلدهای جدول Student را درون کلاس مدل تعریف میکنیم به صورت زیر:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace StudentsProject.Models
{
    public class Student
    {
        [Key]
        public int ID { get; set; }

        [Display(Name ="نام")]
        public string Name { get; set;}

        [Display(Name = "نام خانوادگی")]
        public string Family { get; set;}

        [Display(Name = "کدملی")]
        public string NationalNo { get; set;}

        [Display(Name = "نام پدر")]
        public string FatherName { get; set;}

        [Display(Name = "شماره تماس")]
        public string Tell { get; set;}

        [Display(Name = "آدرس")]
        public string Address { get; set;}

    }
}

ایجاد کلاس Context

حال باید یک کلاس Context برای مدل خود ایجاد کنید برای این منظور بر روی پوشهی Models راست کلیک کرده و سپس گزینه Add و پس از آن Class را انتخاب کنید من نام کلاس Context را StudentDbContext.cs قرار می دهم. محتوای کلاس Context را به صورت زیر ویرایش کنید:

سورس کد کلاس StudentDbContext.cs

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace StudentsProject.Models
{
    public class StudentDBContext : DbContext
    {
        public StudentDBContext() : base("name=StudentDBContext")
        {
        }

        public System.Data.Entity.DbSet<StudentsProject.Models.Student> Students { get; set; }
    }
}

تنظیم ConnectionString

حالا فایل Web.config را باز کرده و کد زیر را بین تگ آغازی <configuration> و تگ پایانی <configuration/> اضافه کنید.

 <connectionStrings>
    <add name="StudentDBContext" connectionString="Data Source=(local); Initial Catalog=StudentDB; Integrated Security=True; MultipleActiveResultSets=True; " providerName="System.Data.SqlClient" />
</connectionStrings>

فعال کردن Migrations و آپدیت کردن دیتابیس

حالا نوبت به آپدیت کردن دیتابیس می‌رسد اما قبل از آپدیت کردن حتما باید Migrations را فعال کنید برای این منظور از منوی بالای Visual Studio ، از قسمت Tools -> NuGet Package Manager ، گزینه Package Manager Console را انتخاب کنید. سپس در محیط Package Manager Console دستور زیر را تایپ کرده و سپس اجرا کنید.

Enable-Migrations -ContextTypeName StudentsProject.Models.StudentDBContext

پس از اجرای دستور بالا یک پوشه به نام Migrations به پروژه شما افزوده می شود از داخل پوشه Migrations فایل Configuration.cs را باز کرده و مقدار  AutomaticMigrationsEnabled را برابر true قرار دهید. سپس تغییرات فایل را ذخیره کنید.

حالا برای آپدیت کردن و یا ایجاد دیتابیس دستور زیر را در محیط Package Manager Console اجرا کنید:

 update-database

حالا دیتابیس sql server را باز کنید همان طور که می بینید دیتابیس StudentDB برای شما ایجاد شده است.

ایجاد کنترلر Home

حال یک کنترلر به نام دلخواه به پروژه خود اضافه نمایید من نام Controller خودم را Home قرار می‌دهم. در این کنترلر قرار است اکشن متدهای مربوط به حذف اطلاعات ، ویرایش و درج اطلاعات در دیتابیس را تعریف کنیم.

افزودن اکشن متد Index برای نمایش اطلاعات دانش آموزان در یک جدول

درون کنترلر Home ، یک اکشن متد به نام Index برای دریافت اطلاعات همه دانش آموزان از دیتابیس تعریف کنید در این اکشن متد اطلاعات دانش آموزان را با با کوئری LINQ از بانک اطلاعاتی دریافت میکنیم.

سورس کد اکشن متد Index

using StudentsProject.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace StudentsProject.Controllers
{
    public class HomeController : Controller
    {
        private StudentDBContext db = new StudentDBContext();

        public ActionResult Index()
        {
            var StudentInfo = (from s in db.Students select s).ToList();
            return View(StudentInfo);
        }
    }
}

حال یک View برای اکشن متد Index به پروژه اضافه کنید. برای این منظور بر روی اکشن متد Index راست کلیک کرده و سپس Add View را انتخاب کنید.

سورس کد ویوی Index

@model IEnumerable<StudentsProject.Models.Student>
@{
    ViewBag.Title = "Index";
    Layout = null;
}
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<div style="direction:rtl !important;margin:40px auto;width:70%">
    <table class="table table-bordered table-hover">
        <thead>
            <tr>
                <th class="text-right">نام</th>
                <th class="text-right">نام خانوادگی</th>
                <th class="text-right">کدملی</th>
                <th class="text-right">نام پدر</th>
                <th class="text-right">شماره تماس</th>
                <th class="text-right">آدرس</th>
                <th class="text-right">ویرایش</th>
                <th class="text-right">حذف</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                @foreach (var item in Model)
                {
                    <td>@item.Name</td>
                    <td>@item.Family</td>
                    <td>@item.NationalNo</td>
                    <td>@item.FatherName</td>
                    <td>@item.Tell</td>
                    <td>@item.Address</td>
                    <td>
                        @using (Html.BeginForm("Edit", "Home", FormMethod.Post))
                        {
                            @Html.AntiForgeryToken()
                            <input type="hidden" name="ID" value="@item.ID" />
                            <button class="btn btn-link" type="submit">ویرایش</button>
                        }

                    </td>
                    <td>
                        @using (Html.BeginForm("Delete", "Home", FormMethod.Post))
                        {
                            @Html.AntiForgeryToken()
                            <input type="hidden" name="ID" value="@item.ID" />
                            <button class="btn btn-link" type="submit">حذف</button>
                        }

                    </td>
                }
            </tr>
        </tbody>
    </table>
</div>


افزودن اکشن متد Create و SubmitCreate برای درج اطلاعات دانش آموزان در دیتابیس

درون کنترلر Home ، یک اکشن متد به نام Create برای نمایش فرم ورود اطلاعات و یک اکشن متد به نام SubmitCreate برای دریافت اطلاعات فرم و درج اطلاعات در دیتابیس تعریف کنید.

سورس کد اکشن متد Create و SubmitCreate

using StudentsProject.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace StudentsProject.Controllers
{
    public class HomeController : Controller
    {
        private StudentDBContext db = new StudentDBContext();

        public ActionResult Create()
        {
            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult SubmitCreate(Student model)
        {
            if (ModelState.IsValid)
            {
                Student Student = new Student()
                {
                    Name = model.Name,
                    Family = model.Family,
                    NationalNo = model.NationalNo,
                    FatherName = model.FatherName,
                    Tell = model.Tell,
                    Address = model.Address,
                };
                db.Students.Add(Student);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View("Create",model);
        }
    }
}

حالا یک ویو برای اکشن متد Create به پروژه اضافه نمایید این View فرم ثبت نام را به ما نمایش می دهد. سورس کد ویوی Create به صورت زیر است :

سورس کد ویویCreate

@model StudentsProject.Models.Student
@{
    ViewBag.Title = "Create";
    Layout = null;
}
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<div style="direction:rtl !important;margin:40px auto;width:70%">
    @using (Html.BeginForm("SubmitCreate", "Home", FormMethod.Post))
    {
        @Html.AntiForgeryToken()
          <div class="form-horizontal">
            <h4>فرم ثبت نام دانش آموز</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
            <div class="form-group">
                @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.Family, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Family, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Family, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.NationalNo, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.NationalNo, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.NationalNo, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.FatherName, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.FatherName, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.FatherName, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.Tell, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Tell, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Tell, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                <div class="col-md-12">
                    <input type="submit" value="ثبت نام" class="btn btn-primary pull-left" />
                </div>
            </div>
        </div>
    }

</div>

افزودن اکشن متد Edit و SubmitEdit برای درج اطلاعات دانش آموزان در دیتابیس

حالا درون کنترلر Home ، یک اکشن متد به نام Edit برای نمایش اطلاعات دانش آموز در حالت ویرایش و یک اکشن متد به نام SubmitEdit برای آپدیت کردن یا ویرایش اطلاعات دانش آموز تعریف کنید.

سورس کد اکشن متد Edit و SubmitEdit

using StudentsProject.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace StudentsProject.Controllers
{
    public class HomeController : Controller
    {
        private StudentDBContext db = new StudentDBContext();

        public ActionResult Edit(int ID)
        {
            var StudentInfo = (from s in db.Students where (s.ID == ID) select s).First();
            return View(StudentInfo);
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult SubmitEdit(Student model)
        {
            var StudentInfo = (from s in db.Students where (s.ID == model.ID) select s).First();
            StudentInfo.Name = model.Name;
            StudentInfo.Family = model.Family;
            StudentInfo.NationalNo = model.NationalNo;
            StudentInfo.FatherName = model.FatherName;
            StudentInfo.Tell = model.Tell;
            StudentInfo.Address = model.Address;
            db.SaveChanges();

            Index();
            return View("Index");
        }
    }
}

حال یک ویو برای اکشن متد Edit به پروژه خود اضافه کنید سورس کد این View به صورت زیر است:

سورس کد ویوی Edit

@model StudentsProject.Models.Student
@{
    ViewBag.Title = "Edit";
    Layout = null;
}
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<div style="direction:rtl !important;margin:40px auto;width:70%">
    @using (Html.BeginForm("SubmitEdit", "Home", FormMethod.Post))
    {
        @Html.AntiForgeryToken()
        <div class="form-horizontal">
            <h4>ویرایش اطلاعات دانش آموز</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
            @Html.HiddenFor(model => model.ID)
            <div class="form-group">
                @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.Family, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Family, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Family, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.NationalNo, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.NationalNo, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.NationalNo, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.FatherName, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.FatherName, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.FatherName, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.Tell, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Tell, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Tell, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                <div class="col-md-12">
                    <input type="submit" value="ذخیره تغییرات" class="btn btn-primary pull-left" />
                </div>
            </div>
        </div>
    }

</div>

افزودن اکشن متد Delete و SubmitDelete برای حذف اطلاعات دانش آموزان از دیتابیس

در کنترلر Home ، یک اکشن متد به نام Delete برای نمایش پیغام حذف اطلاعات و یک اکشن متد به نام SubmitDelete برای حذف اطلاعات دانش آموز تعریف کنید.

سورس کد اکشن متد Delete و SubmitDelete

using StudentsProject.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace StudentsProject.Controllers
{
    public class HomeController : Controller
    {
        private StudentDBContext db = new StudentDBContext();

        public ActionResult Delete(int ID)
        {
            ViewBag.ID = ID;
            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult SubmitDelete(int ID)
        {
            var StudentInfo = (from s in db.Students where (s.ID == ID) select s).First();
            db.Students.Remove(StudentInfo);
            db.SaveChanges();

            Index();
            return View("Index");
        }
    }
}

 سورس کد ویوی Delete

@{
    ViewBag.Title = "Delete";
    Layout = null;
}

<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<link href="~/Content/Site.css" rel="stylesheet" />
<div style="direction:rtl !important;margin:40px auto;width:50%"  class="alert alert-warning">
    <p>آیا در مورد حذف اطلاعات این دانش آموزاطمینان دارید ؟</p>
    @using (Html.BeginForm("SubmitDelete", "Home", FormMethod.Post))
    {
        @Html.AntiForgeryToken()
        <div class="form-group">
            <input type="hidden" value="@ViewBag.ID" name="ID" />
        </div>
        <div class="form-actions no-color">
            <a href="/Home/Index" class="btn btn-default pull-left" data-dismiss="modal">خیر</a>
            <input type="submit" value="بله" class="btn btn-danger pull-left" />
            <div style="clear:both"></div>
        </div>
    }
</div>

بسیار خب به پایان این مقاله آموزشی ASP.NET MVC رسیدیم در صورتی که پیرامون این مقاله آموزشی سوالی داشتید حتما در قسمت نظرات مطرح کنید.

 

فیلم آموزشی asp.net core 2

آرزو ابراهیمی
بیش از 6 سال است که زمینه طراحی و توسعه سایت فعالیت می‌کنم، طراح و برنامه نویس انواع سامانه‌های تخصصی پزشکی، مناقصات، فروشگاهی و … بودم و هستم و هدفم در سایت میزفا ارائه اطلاعات بروز و ناب در زمینه طراحی سایت است. تا از این طریق بتونم تجربیات و دانسته های خودم را با تمامی علاقمندان به مباحث طراحی سایت به اشتراک بزارم .

فیلم آموزشی asp.net core 2

42 نظر

42 پاسخ

  1. سلام. واقعا خسته نباشید توضیحات بسیار عالی بودن و کمک بسیاری بهم کردین.
    ممنون از سایت خوبتون.

  2. سلام من به modal ایجاد کردم برای تایید حذف یک محصول
    اما روی دکمه حذف مدال میزنم هیچ کاری نمیکنه
    کد ajx رو هم گذاشتم
    میشه نمونه فایلی دارید ارایه کنید؟
    ممنون

    1. سلام
      از bootstrap استفاده کن برای ساخت مودال ها.
      اینطوری باگ کمتری داری.

  3. درود و سپاسی بیکران بانوی گرامی
    از این زمانی که گذاشتید

  4. سلام خسته نباشید
    اگر داخل کلاس StudentDB از ارایه هم استفاده کنیم
    امکان پذیر هست در sql؟؟
    چون چنین چیزی رو من داخل nosql پیاده کردم اما الان نیاز دارم که روی sql پیاده سازی کنم
    تشکر

    1. سلام وقتتون بخیر
      خیر پایگاه داده sql از نوع داده ای ارایه پشتیبانی نمیکند.

    2. سلام ممنونم سلامت باشید
      خیر امکان پذیر نیست
      sql از نوع داده آرایه پشتیبانی نمیکنه.

  5. سلام مراحلی که گفتین انجام دادم اما تو بخش Package Manager Console قسمت Enable-Migrations -ContextTypeName StudentsProject.Models.StudentDBContext تایپ میکنم این ارور نشون میده
    Migrations have already been enabled in project ‘C:\Users\MAHDI\source\repos\StudentsProject\StudentsProject\bin\StudentsProject.dll’. To overwrite the existing migrations configuration, use the -Force parameter.
    و بعد از ابدیت دیتابیس این پیام میده Specify the ‘-Verbose’ flag to view the SQL statements being applied to the target database.
    No pending explicit migrations.
    Running Seed method.
    ویژوال نسخه 2017 و sql2014 نصب کردم

    1. سلام وقتتون بخیر
      شما دستورات زیر رو وارد کنید
      Enable-Migrations -Force
      update-database

  6. سلام.وقت بخیر.
    ممنون از مطالب خوبی که قرار میدید.
    لطفا به سوال من هم جواب بدید
    فایل context برای ما چه کاری انجام میده و اینکه وقتی من میخوام using.data.entity رو اضافه کنم برام entity رو نمیاره.
    باید ناگت خاصی رو اصافه کنم؟

    1. سلام وقتتون بخیر
      توی فایل context ما DbSet ها رو تعریف می کنیم هر کدوم از DbSet ها تبدیل میشن به جداول دیتابیس … بعدش می تونیم عملیات CRUD از طریق DbSet ها روی دیتابیس انجام بدیم.
      اگر منظورنون پکیج entityframework هست بله باید از طریق Nuget نصب بشه.

  7. سلام.
    Asp.net Core 3.1
    من قبلا یک جدول با Migration در بانک ایجاد کرده بودم. چون دیدم اسمش اشتباه نوشتم سعی کردم اونو از بانک پاکنم. الآن که میخوام یک جدول دیگه با نام دیگه ای به بانک اضاف کنم پیغام همون جدول رو میده. من اون جدول رو با کلید Delete پاک کرده بودم.متن خطا:
    Cannot drop the table ‘Couponn’, because it does not exist or you do not have permission.
    الآن چکار کنم؟ این جدول رو من قبلا پاک کرده بودم و الآن داخل بانکم نیست.
    ممنون

    1. سلام وقتتون بخیر
      شما باید بعد از حذف جدول و اضافه کردن جدول جدول جدید یک migration جدید اضافه کنید و دیتابیس رو با دستور update-database آپدیت کنید.

      اگر فقط قصدتون تغییر نام جدول هم بود فقط کافی بود کلاس مربوط به همون جدول رو ویرایش کنید و نام کلاس رو تغییر بدید بعدش یک migration جدید اضافه کنید و دیتابیس رو آپدیت کنید.

  8. سلام خسته نباشید
    توی قسمت edit وقتی میخواهیم edit کنیم چجوری باید موقع زدن دکمه edit تموم اون فیلد هایی که اطلاعات هست بره مستقیم توی اون فیلدهایی خودشون قرار بگیرن برای ویرایش یعنی موقع زدن دکمه ویرایش فیلدها خالی نباشه داخلشون اطلاعات اون مطلبی باشه که میخواهیم ویرایشش کنیم.؟؟

    1. سلام
      شما داخل اکشن متد می تونید model و یا View Model خودتون رو مقداردهی کنید به عنوان مثال اطلاعات کتاب رو می خواهید به View ارسال کنید یک نمونه از model تعریف کرده و سپس پراپرتی های model رو مقداردهی کنید و درنهایت model به View ارسال کنید اونوفت اطلاعات شما در حالت ویراش قابل مشاهده هست.

  9. سلام
    من میخوام یک قسمت سرچ اطلاعات که به صورت Ajax هست اضافه کنم به این مثال .
    از ویو مدل استفاده کردم و پارشیال ویو هم اوکی هست .
    ولی وقتی پارشیال ویو رو پاس میدم
    The model item passed into the ViewDataDictionary is of type ‘System.Collections.Generic.List`1[Student.Models.StudentDB]’, but this ViewDataDictionary instance requires a model item of type ‘Student.Models.ViewModels.SearchViewModels’.
    با این خطا مواجه میشم که منطقی هم هست! ولی نمیدونم باید چکار انجام بدم
    ممنون میشم راهنمایی کنید …

    1. سلام دلیل این خطا به این خاطر هست که مدل یا ویو مدل View و Partial View یکسان نیست شما می تونید Model یا ViewModel مورد نیاز Partial View را از داخل View به آن پاس دهید .

  10. سلام. برای من تو کلاس StudentDbContext.cs دستور DbContext رو خطا میده چیکار کنم؟

    1. سلام احتمالا namespace مربوط به کلاس DbContext رو به پروژتون اضافه نکردید.

  11. سلام . متاسفانه تو پروژه ای که من ایجاد میکنم webconfig نداره . و همچنین تو کلاس StudentDbContext.cs زیر DbContext خط قرمز میکشه و خطا میده . ممنون میشم راهنمایی کنید. با تشکر.

    1. سلام … شما پروژتون رو از نوع ASP.NET MVC ایجاد کردید؟ چون پروژتون باید فایل Web.config رو داشته باشه مگر اینکه پروژه ی شما از نوع ASP.NET Core باشه که کلا فایل Web.config رو نداره و باید Connection String رو توی فایل appsettings.json ایجاد کنید.

        1. سلام. نوع پروژه ای که من تعریف کردم، از نوع :
          ASP.NET WEB APPLICATION (.NET CORE)
          من تو این مورد چطور تغییرات داده ها در ارتباط با SQL رو انجام بدم؟ ممنون میشم راه نمایی کنید منو . با تشکر از شما خانم ابراهیمی.

          1. سلام … در پروژه های ASP.NET Core برای ارتباط با بانک اطلاعاتی و انجام عملیات CRUD ، از Entity Framework Core استفاده کنید. برای افزودن EF Core به پروژه می توانید از مقاله افزودن EF Core به پروژه استفاده کنید.

  12. سلام
    مثالی که شما مطرح کردید اگه اشتباه نکنم از نوع کد فرست هست، کاشکی یک نمونه از همین مثال رو از نوع مدل فرست می گفتین چون راجب مدل فرست خیلی مطلب کم هست و من به شدت به اون احتیاج دارم

    1. با سلام … بله در این روش از CodeFirst استفاده کردیم … سعی میکنم در مقالات آتی این مورد رو هم آموزش بدم … موفق باشید.

  13. حالا برای آپدیت کردن و یا ایجاد دیتابیس دستور زیر را در محیط اجرا کنید:

    update-database در كدام محيط دقيقا اين دستور بايد بنويسم ؟

    1. با سلام … در محیط Package Manager Console این دستور را تایپ کنید.

    1. با سلام برای این مقاله فیلم آموزشی تهیه نشده است ،با مطالعه دقیق این مقاله به راحتی می تونید عملیات درج ، حذف ، ویرایش و … را انجام بدید.

  14. سلام خسته نباشید. آیا امکانش هست به این پروژه یه آموزش دیگه هم اضافه کنید!؟ یه جدول شهر اضافه بشه و با استفاده از dropdownlist موقع درج رکورد مشخص بشه که هر دانش آموز متعلق به کدام شهر هست

    1. سلام … در حال حاضر فرصتی برای انتشار مقاله جدید ندارم در آینده حتما یک مقاله آموزشی در این باره منتشر خواهم شد .

  15. سلام
    ممنن از مطلب خوبتون.
    فقط دیالوگ ها برای من کار نمی کنن. همه فرمها تو یک صفحه جدا باز میوند.
    این مثال میشه برای دانلود بزارید تا فایلهای .js هم همراهش دانلود کنیم و دیالوگ ها کار کنن؟

    1. سلام … خواهش میکنم … منظورتون از دیالوگ ها رو متوجه نشدم !!! … در ضمن من از فایل js استفاده نکردم … منظورتون استفاده از ajax برای عملیات درج و حذف و ویرایش هست ؟ که عملیات در یک صفحه انجام بشه ؟

      1. سلام. نه منظورم اینه که مثلا وقتی دکمه حذف را می زنیم باید یه پنجره روی صفحه اصلی باز بشه که پیفام حذف را بده . یا برای درج و ویرایش هم همینطور. ولی باری من پنجره جدا باز نمیشه. میره به یک صفحه دیگه و برای برگشت به صفحه اصلی باید back بزنم.

        1. با سلام منظور شما استفاده از ajax هست . من یک نمونه کد برای شما قرار میدم که وقتی روی دکمه حذف می زنید یک Modal در صفحه باز میشه و در صورتی که کاربر بر روی دکمه بله کلیک کنه عملیات حذف انجام میشه امیدوارم که به دردتون بخوره.

          کد اکشن متد Delete

            public ActionResult Delete(string id)
                  {
                      ViewBag.id = id;
                      return PartialView();
                  }
          

          کد Partial View مربوط به اکشن متد Delete

          <div>آیا در مورد حذف این اطلاعات اطمینان دارید ؟</div>
          @using (Html.BeginForm("SubmitDelete", "Home", FormMethod.Post))
          {
                @Html.AntiForgeryToken()
                <div class="form-group">
                <input type="hidden" value="@ViewBag.id" name="id" />
                </div>
                <div class="form-actions no-color body-footer footer-content">
                <button type="button" class="btn btn-primary pull-right" data-dismiss="modal">خیر</button>
                <input type="submit" value="بله" class="btn btn-danger pull-right  margin-right-10" />
                <div style="clear:both"></div>
                </div>
          }
          

          کد ajax برای نمایش Modal در صفحه (از Modal های بوت استرپ در صفحه استفاده کنید)

          function Delete(id) {
                  $.ajax({
                      url: "Delete/"+id,
                      type: "post",
                      data: {},
                  }).done(function (result) {
                      $('#myModal').modal('show');
                      $('#modal-title').html('حذف اطلاعات');
                      $('.modal-body').html(result);
                  });
              }
          
          1. خیلی خیلی ممنونم از اینکه وقت میزارید و پاسخ میدید.

  16. با عرض سلام
    از مطالب مفیدتون بسیار سپاسگزارم
    نیاز به آموزش MVC بصورت آنلاین(مثلا اسکایپ دارم)
    خواهشمندم در این زمینه من را راهنمایی بفرمایید.
    با تشکر فراوان

    1. سلام … متشکرم … من فعلا فرصتی برای تدریس MVC به صورت خصوصی ندارم … می تونید برای یادگیری از ویدیوهای آموزشی MVC سایت های معتبر استفاده کنید… موفق باشید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

حداکثر حجم فایل برای آپلود: 1 مگابایت. فایل‌های مجاز برای آپلود: عکس, ویس, ویدیو, ورد یا پی دی اف, فایل متنی, زیپ. شما می‌تونید برای بهتر پرسیدن سوالتون، عکس یا ویس یا حتی فیلم در بخش نظرات میزفا آپلود کنید. برای ضبط ویس می‌تونید از خود واتس آپ استفاده کنید و بعد اینجا آپلود کنید و برای ارسال عکس هم کافی هست اسکرین شات بگیرید. Drop file here

با موفقیت ثبت شد، میزفا از شما برای عضویت در خبرنامه هفتگی تشکر میکند.

عضویت در خبرنامه هفتگی برای دریافت:

  • فیلم و مقاله رایگان سئو
  • آموزش‌های UX ، GA و GTM
  • مقاله های تخصصی ASP.NET Core
  • اطلاع رسانی از محصولات
فیلم آموزشی asp.net core 2
ترک میزفا خوب نیست!
معرفی جامع‌ترین ابزار سئو در ایران
بالای ۱۰ هزار عضو
PHZpZGVvIHdpZHRoPSI2MDAiIGhlaWdodD0iMzUwIiBwb3N0ZXI9Imh0dHBzOi8vbWl6ZmEuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjMvMDUvcG9zdGVyLW1pemZhLXRvb2xzLXZpZGVvLW1pbi5wbmciIGNvbnRyb2xzIHByZWxvYWQ9Im5vbmUiPiANCiAgIDxzb3VyY2Ugc3JjPSJodHRwczovL21pemZhLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA1L21pemZhX3Rvb2xzXzcyMHAubXA0IiB0eXBlPSJ2aWRlby9tcDQiPg0KPC92aWRlbz4=