دسته بندی ها
19:11 1399/11/23

اضافه کردن بخش تنظیمات سایت در Mvc Core

مشخصات سوال کننده :
کاربر : Programmer     امتیاز کاربر : 27     رتبه کاربر : 26
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3017
هوش مصنوعی

پاسخ هوش مصنوعی

برای اضافه کردن بخش تنظیمات در یک برنامه ASP.NET Core MVC، باید مراحل زیر را دنبال کنید:

1. **ایجاد مدل تنظیمات**: ابتدا یک مدل برای تنظیماتی که می خواهید ذخیره کنید، ایجاد کنید.

public class Settings
{
    public int Id { get; set; }
    public string CompanyName { get; set; }
    public string Phone { get; set; }
    public string Address { get; set; }
}

2. **ایجاد DbContext**: یک DbContext برای ذخیره سازی اطلاعات به پایگاه داده اضافه کنید.

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(DbContextOptions options)
        : base(options)
    {
    }

    public DbSet<Settings> Settings { get; set; }
}

3. **ایجاد Controller**: یک Controller برای مدیریت تنظیمات ایجاد کنید.

public class SettingsController : Controller
{
    private readonly ApplicationDbContext _context;

    public SettingsController(ApplicationDbContext context)
    {
        _context = context;
    }

    public IActionResult Index()
    {
        var settings = _context.Settings.FirstOrDefault() ?? new Settings();
        return View(settings);
    }

    [HttpPost]
    public IActionResult Index(Settings settings)
    {
        if (ModelState.IsValid)
        {
            if (_context.Settings.Any())
            {
                _context.Settings.Update(settings);
            }
            else
            {
                _context.Settings.Add(settings);
            }
            _context.SaveChanges();
            return RedirectToAction(nameof(Index));
        }
        return View(settings);
    }
}

4. **ساخت View**: یک View برای نمایش و ویرایش تنظیمات بسازید.

@model Settings

5. **تنظیم پایگاه داده**: مطمین شوید که migration ها را اجرا کرده اید تا جدول Settings به پایگاه داده اضافه شود.

dotnet ef migrations add InitialCreate
dotnet ef database update

این مراحل به شما امکان می دهد که رکورد تنظیمات را مدیریت کنید و اطلاعات لازم را ذخیره و بارگذاری نمایید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : hamid_b 21:05 1399/11/23

توی آموزش زیر قسمت 81 نگاه کنید دقیقا همین کاری که شما می خواید رو انجام میدن.

پیاده سازی سایت خبری مشابه سایت 90

تصویر زیر رو ببینید

ایجاد بخش تنظیمات سایت در asp.net core

 

در تصویر بالا همونطوری که می بینید میتونیم عنوان سایت و بعضی از تنظیماتش زو مشخص کنیم و از اون ببعد طبق این تنظیمات اطلاعات نمایش داده میشن. این اطلاعات هم فقط یکبار ایجاد میشه و از دفعه بعدی فقط ویرایش میشه.

 

چگونه بخش تنظیمات سایت در Asp.net Core را به وجود بیاوریم ؟

ابتدا یک جدول (کلاس) به نام SiteSetting به وجود بیاورید

public class SiteSetting
{
   [Key]
   public int id { get; set; }
   public string Address { get; set; }
   public string Phone { get; set; }
   public string CompanyName { get; set; }
}

خب حالا این جدول رو داخل DbContext پروژه هم ایجاد کنید و توسط یک مایگریشن این جدول رو در دیتابیس به وجود بیارید.

public class ApplicationDbContext : IdentityDbContext<ApplicationUsers,ApplicationRoles,string>
{
   public ApplicationDbContext(DbContextOptions<ApplicationDbContext> option) : base(option)
   {

   }
   public DbSet<SiteSetting> SiteSetting_Tbl { get; set; }
}

 

در کدهای بالا ما توی DbContext پروژه جدول SiteSetting_Tbl رو به وجود آوردیم.

نکته مهم : بعد از اینکه جدول SiteSetting_Tbl رو داخل Sql Server به وجود آوردید به صورت دستی اطلاعات جدول رو پر کنید. یعنی یک ردیف توش اطلاعات ثبت کنید. از این ببعد این رکورد رو ویرایش می کنیم فقط.

خب حالا یک کنترلر به نام SiteSetting و یک اکشن به نام Index هم به وجود بیارید. فیلدهایی که می خواید رو توی ویوی خودتون قرار بدید. مثلا فیلدهای زیر رو من قرار میدم. دقت کنید که کدهایی که براتون می نویسم باید شما تغییراتی بدید و نمونه هست.

 

@model ProjectName.Models.SiteSetting


<div>
    <div>
        <form asp-controller="SiteSetting" asp-action="setSetting" method="post">
            <input asp-for="id" class="hidden">

            <div class="form-group">
                <label>نام شرکت</label>
                <input asp-for="CompanyName" />
            </div>

            <div class="form-group">
                <label>آدرس</label>
                <div>
                    <textarea asp-for="Address"></textarea>
                </div>
            </div>

            <div class="form-group">
                <label>تلفن</label>
                <div>
                    <input asp-for="Phone" />
                </div>
            </div>

            <div class="form-group">
                <input type="submit" value="ثبت اطلاعات" />
            </div>
        </form>

        @if (ViewBag.SuccessMessage != "")
        {
            <span style="color:green;">
                @ViewBag.SuccessMessage
            </span>
        }

    </div>
</div>

خب حالا در بخش کنترلر و در کنترلر SiteSetting دستورات زیر رو می نویسیم.

[HttpPost]
public IActionResult setSetting(SiteSetting model)
{
   if (ModelState.IsValid)
   {
      _context.SiteSettingRepositoryUW.Update(model);
      _context.save();

      ViewBag.SuccessMessage = "اطلاعات با موفقیت ویرایش شد";
   }
   return View("Index", model);
}

خب دستور بالا هم یک دستور ویرایش هست فقط. یعنی هیچ رکوردی رو ثبت نمی کنیم.

به این پاسخ امتیاز بدهید    0
امتیاز: 518 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود