نمایش نتایج 1 تا 4 از 4

نام تاپیک: ثبت Id ارسال شده به صفحه

  1. #1

    Question ثبت Id ارسال شده به صفحه

    سلام
    vs2022 و asp.net core5 و razor pages
    سایت کتاب فروشیه - یک قسمت مدیریت عناوین یا دسته بندی ها داره - در این قسمت یک عملیات ویرایش داره که وقتی کتاب رو انتخاب میکنی برای ویرایش دسته بندیش، یک دراپ دان میاد با عناوینی که از دیتابیس پر میشه.
    حالا میخوام این عناوین وقتی پر میشه اول در هنگام نمایش، اون عنوانی نمایش داده بشه که همین الان برای این کتاب انتخاب شده هست.
    یعنی عناوین رو به ترتیب کلی خودش نمایش نده بلکه توی تراپ دان اول اون عنوانی بالا باشه که الان متعلق به این کتاب هست که میخوام عوضش کنم.

    این کار رو برای کاربر ها برای تغیر نقششون توی سایت انجام دادم که به صورت زیر هست ولی برای کتگوری که مثل رول userManager.GetRolesAsync_ نداره، نتونستم ای دی که ازش اومده داخل صفحه بگیرم.

    var userRoles = _userManager.GetRolesAsync (new IdentityUser () { Id = User.Id }).Result;
    Roles = new SelectList(_roleManager.Roles, "Name", "Name", userRoles.First ());

  2. #2
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,182

    نقل قول: ثبت Id ارسال شده به صفحه

    سلام

    شما در پارامتر دوم SelectList باید نام ستون Id را نمایش بدید. شما دوبار Name را تعریف کردید. اولین مقدار باید نام ستون کلید اصلی و دومی باید عنوانی باشه که قراره نمایش بده. لینک زیر را نگاه کنید:
    https://www.learnrazorpages.com/razo...s/select-lists

  3. #3

    Exclamation نقل قول: ثبت Id ارسال شده به صفحه

    نقل قول نوشته شده توسط mmbguide مشاهده تاپیک
    سلام

    شما در پارامتر دوم SelectList باید نام ستون Id را نمایش بدید. شما دوبار Name را تعریف کردید. اولین مقدار باید نام ستون کلید اصلی و دومی باید عنوانی باشه که قراره نمایش بده. لینک زیر را نگاه کنید:
    https://www.learnrazorpages.com/razo...s/select-lists
    البته شما درست میفرمایید ولی مورد سوال بنده نمایش این ها نیست.. و داخل لینک هم آیتم ها رو از دیتابیس نگرفته این مقداری مسئله رو برای من پیچیده میکنه چون دقیقا نقطه ای که با ثبت آیتم انتخابی در دراپ دان به مشکل میخورم همین جا هست که از دیتابیس میخونمش.
    بک و ویوی کدم رو ضمیمه میکنم و پایینش سوالم رو دوباره روشن میکنم.

    Edit.cdhtml.cs:

    namespace BookStore.Pages.CRUD_CategoryTypes
    {
    public class EditModel : PageModel
    {
    private readonly ApplicationDbContext _context;


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


    [BindProperty] public CategoryType CategoryType { get; set; }
    [BindProperty] public string SelectedCategoryType { get; set; }
    public SelectList Categories { get; set; }
    public async Task<IActionResult> OnGetAsync (int? id)
    {
    if (id == null)
    {
    return NotFound ();
    }


    CategoryType = await _context.CategoryTypes.FirstOrDefaultAsync (m => m.Id == id);


    if (CategoryType == null)
    {
    return NotFound ();
    }


    var productCategory = _context.CategoryTypes.Find (CategoryType.Id);
    Categories = new SelectList (_context.CategoryTypes, "Name", "Id", productCategory.Name);
    return Page ();
    }


    public async Task<IActionResult> OnPostAsync ()
    {
    if (!ModelState.IsValid)
    {
    return Page ();
    }


    _context.Attach (CategoryType).State = EntityState.Modified;


    var categoryInDb = _context.CategoryTypes.FirstOrDefault (c => c.Id == CategoryType.Id);
    if (categoryInDb == null)
    {
    return NotFound ();
    }
    categoryInDb.Name = CategoryType.Name;


    var productCategory = await _context.CategoryTypes.FirstOrDefaultAsync (u => u.Id == CategoryType.Id);
    if (SelectedCategoryType != productCategory.Name)
    {
    _context.Remove(CategoryType).State = EntityState.Deleted;
    _context.CategoryTypes.AddAsync(Id) = EntityState.Added;
    }
    return RedirectToPage ("./Index");
    }
    }
    }


    در کد بالا داخل OnPost میخوام وقتی عنوان جدیدی در دراپ دان انتخاب کرد بعد از زدن ثبت به این شکل باشه که عنوان قبلی برای این محصول حذف بشه و عنوان جدید جای گزینش بشه.
    کد زیر هم ویوی کار هست .


    Edit.cshtml:
    کد HTML:
    <form method="post">            <div asp-validation-summary="ModelOnly" class="text-danger"></div>            <input type="hidden" asp-for="CategoryType.Id" />            <div class="form-group">                <select asp-for="SelectedCategoryType" asp-items="Model.Categories" class="form-control"></select>            </div>            <div class="form-group">                <input type="submit" value="ذخیر تغیرات" class="btn btn-warning" />                <i class="fa fa-save"></i>            </div>        </form>

  4. #4
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,182

    نقل قول: ثبت Id ارسال شده به صفحه

    یک مرور در لینک زیر داشته باشید:
    https://learn.microsoft.com/en-us/do...system-object)
    https://stackoverflow.com/questions/...p-net-core-mvc



    • پارامتر اول باید نام ستون Value باشه و پارامتر دوم نام ستون Text باشه.
    • مقدار productCategory رو با دستور Find مقدار دهی کردید. این مقدار باید IEnumerable باشه. یعنی لیستی از Category.

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •