نمایش ساختار درختی در asp.net core 8 razor pages و bootstrap 5.3.3
باسلام.
یک پروژه در Asp.Net Core 8 با استفاده از Razor pages ایجاد کردم و لایوت آن رو با فریمورک Bootstrap 5.3.3 طراحی کردم.
حال میخواهم کلاس TreeViewCategory به صورت ساختار درختی نمایش داده شود به طوریکه موارد زیر رعایت شود.
1. بتوان یک یا چند پدر یا فرزند را انتخاب کرد.
2.بتوان موارد انتخاب شده را ذخیره کرد.
3.موارد انتخاب شده ای که قبلا ذخیره شده باید در دفعه بعد به صورت انتخاب شده نمایش داده شوند.
کلاس TreeViewCategory
public class TreeViewCategory
{
public int id { get; set; }
public string text { get; set; }
public int? parentId { get; set; }
public bool selected { get; set; }
}
کلاس DbContext
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
public DbSet<Category> Categories { get; set; }
}
پاسخ هوش مصنوعی
برای نمایش ساختار درختی در ASP.NET Core 8 با استفاده از Razor Pages و Bootstrap 5.3.3، می توانید مراحل زیر را دنبال کنید:
ابتدا یک صفحه Razor (برای مثال، TreeView.cshtml) ایجاد کنید:
@page
@model YourNamespace.Pages.TreeViewModel
@{
ViewData["Title"] = "درخت دسته بندی";
}
@ViewData["Title"]
@foreach (var category in Model.Categories)
{
-
@category.text
}
سپس مدلی برای کنترلر خود تعریف کنید:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace YourNamespace.Pages
{
public class TreeViewModel : PageModel
{
private readonly AppDbContext _context;
public TreeViewModel(AppDbContext context)
{
_context = context;
}
public List Categories { get; set; }
public void OnGet()
{
Categories = _context.Categories.Select(c => new TreeViewCategory
{
id = c.Id,
text = c.Name,
parentId = c.ParentId,
selected = c.IsSelected // Assuming you have a property to check if selected
}).ToList();
}
public IActionResult OnPostSave(int[] selectedCategories)
{
// ذخیره سازی منطق به این صورت اضافه میشود
// مانند درج در دیتابیس یا بروزرسانی
return RedirectToPage(); // بازگشت به صفحه
}
}
}
در فایل Startup.cs (یا Program.cs در ASP.NET Core 6 و بالاتر) می توانید DbContext را تنظیم کنید:
services.AddDbContext(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
});
نهایتا، برای ذخیره انتخاب ها، باید یک JavaScript ساده ایجاد کنید:
document.getElementById('saveBtn').addEventListener('click', function () {
const checkboxes = document.querySelectorAll('input[name="selectedCategories"]:checked');
const selectedIds = Array.from(checkboxes).map(chk => chk.value);
fetch('/YourPageOnPost', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(selectedIds)
}).then(response => {
if (response.ok) {
alert('موارد انتخاب شده ذخیره شد.');
}
});
});
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- چرا استوری های واتس اپ برای دوستان نمایش داده نمیشن ؟
- چند تا استوری رایگان می تونیم تلگرام بذاریم ؟
- خطای Severity Code Description Project هنگام استارت پروژه
- کار نکردن navBar و sideBar در پروژه Asp.net core
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2