نمایش ساختار درختی در 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 به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2