دسته بندی ها
10:05 1400/04/18

نحوه ارسال ViewBag به ViewComponent در Asp.net Core

مشخصات سوال کننده :
کاربر : Ahmadfa     امتیاز کاربر : ‎−2     رتبه کاربر : 7212
دسته بندی : Asp.net Core

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

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

برای ارسال ViewBag به ViewComponent در ASP.NET Core، می توانید از روش های زیر استفاده کنید.

ابتدا مطمین شوید که ViewBag در Controller شما تنظیم شده است:


public IActionResult YourAction()
{
    ViewBag.YourParameter = "مقدار دلخواه";
    return View();
}

سپس وقتی که ViewComponent را در View خود فراخوانی می کنید، می توانید پارامتر مورد نظر را به آن ارسال کنید:


@await Component.InvokeAsync("YourViewComponent", new { yourParameter = ViewBag.YourParameter })

سپس در ViewComponent خود، پارامتر را در متد Invoke یا InvokeAsync دریافت کنید:


public class YourViewComponent : ViewComponent
{
    public IViewComponentResult Invoke(string yourParameter)
    {
        // استفاده از yourParameter
        return View();
    }
}

این روش به شما این امکان را می دهد که از ViewBag به عنوان منبعی برای ارسال داده ها به ViewComponent استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 17:15 1400/04/18

شما برای ارسال ViewBag به ViewComponent می تونید دقیقا به صورت عادی و مثل ارسال ViewBag از کنترلر به View عملی کنید.

برای این کار ابتدا یک ViewComponent ایجاد کنید.

 

آموزش ایجاد و استفاده از ViewComponent

  • ابتدا یک پروژه خالی از نوع Asp.net Core ایجاد کنید. در پوشه Views و Shared یک پوشه جدید به نام Components ایجاد کنید. یک پوشه جدید به نام Component هم در روت سایت و در کنار پوشه های Controller و ... ایجاد کنید.
  • روی پوشه Compontnts درون پوشه Shared کلیک راست کنید و یک پوشه دیگر به نام ComOne ایجاد کنید.
  • درون پوشه ComOne یک View به نام Default ایجاد کنید.
  • حالا درون پوشه Component هم یک کلاس به نام ComOne ایجاد کنید.

در حال حاضر Solution شما باید به شکل زیر باشد :

ارسال پارامتر به viewcomponent

 

  • خب در Default.cshtml کدهای زیر را بنویسید :
<p>
    Component 1 + @ViewBag.Com
</p>

همانطور که ملاحظه می کنید از یک ViewBag به نام ViewBag.Com استفاده شده است. حالا مقدار این ViewBag را به صورت زیر ارسال می کنیم :

[ViewComponent(Name = "ComOne")]
public class ComOne : ViewComponent
{
    public IViewComponentResult Invoke()
    {
       ViewBag.Com = "Hello";
       return View();
    }
}

 

  • ضمنا برای استفاده از ViewCompoent درون ویوی index.cshtml هم از کد زیر استفاده می شود.
@await Component.InvokeAsync("ComOne")

 

به همین راحتی میتونید به ViewComponent مقدار ارسال کنید.

دانلود سورس

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

نحوه ارسال Model به ViewComponent در Asp.net Core

ویرایش شده در جمعه 18 تیر 1400 ساعت 17:16:31
به این پاسخ امتیاز بدهید    1
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود