دسته بندی ها
14:34 1401/06/23

کنترلر کردن مقدار true و false توسط ViewBag در View

مشخصات سوال کننده :
کاربر : hastia     امتیاز کاربر : 1     رتبه کاربر : 152
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2112
3 نظر
hamid_b : شما دقیقا میخاید چیکار کنید ؟ میخواید یک رشته رو در یک ViewBag ذخیره کنید و در View نمایش بدید یا ازش استفاده کنید ؟

امتیاز کاربر : 518   رتبه کاربر : 4   تاریخ ثبت : 07:00 1401/06/24
hastia : این درست شد لینک رو اشتباه چک می کردم باید این طوری چک میکرد. https://localhost:44385/active?EmailActiveCode=8e8d24e8635a4c229ae03dfcbbf919ac ولی فقط توی ویو نمایش صفخه خود کلمه sucess/error .. میافته اینو چطوور باید به صورت متن نشون بدیم

امتیاز کاربر : 1   رتبه کاربر : 152   تاریخ ثبت : 03:08 1401/06/25
hastia : چطور میشه جندین مقدار viewdata رو که حالا ممکنه success/not found/error باشه تو ویو نشون داد. در حالیکه هر کدوم با کلاس مختلف قراره نمایش داده بشند .مثلا موفق بود سبر نمایش بدهو خطا بود قرمز.. منظورم اینه توی ویوو هم باز باید if بگذاریم؟

امتیاز کاربر : 1   رتبه کاربر : 152   تاریخ ثبت : 08:12 1401/06/26
ادامه نظرات ...
هوش مصنوعی

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

برای حل مشکل شما در ارسال مقداری از کنترلر به ویو با استفاده از ViewBag یا ViewData، مطمین شوید که نام کلیدهایی که استفاده می کنید منطبق با کلیدهایی باشد که در کنترلر تنظیم کرده اید. در کد شما، نام کلید "active" در کنترلر تعیین شده، اما در ویو شما از "Active" استفاده کرده اید. این ممکن است دلیل مشکل شما باشد.

شما می توانید این کار را با اصلاح نام کلید در ویو به "active" انجام دهید. در زیر نسخه اصلاح شده کد ویو آورده شده است:

<div class="container">
     

    @if (@ViewData["active"] != null)

    {
        <div class="alert alert-success">کاربر عزیز حساب شما @ViewData["active"] است</div>

        <p>
            <a href="/login"></a>
        </p>
    }

    else
    {
        <div class="alert alert-success"> کاربری با مشخصات ارسال شده یافت نشد.</div>
    }

</div>

همچنین می توانید از ViewBag نیز به شکل زیر استفاده کنید:

<div class="container">
     

    @if (ViewBag.Active != null)

    {
        <div class="alert alert-success">کاربر عزیز حساب شما @ViewBag.Active است</div>

        <p>
            <a href="/login"></a>
        </p>
    }

    else
    {
        <div class="alert alert-success"> کاربری با مشخصات ارسال شده یافت نشد.</div>
    }

</div>

در کنترلر، می توانید به شکل زیر مقدار ViewBag را تنظیم کنید:

ViewBag.Active = result;

با این تغییرات، باید بتوانید مقادیر را به درستی از کنترلر به ویو منتقل کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 01:53 1401/06/24

سوالتون کمی مبهم هست. اگر در کار با ViewBag یا ViewData مشکل دارید می تونید لینک زیر رو ببینید که به صورت خیلی ساده استفاده از ViewBag توضیح داده شده.

نمایش پیام به کاربر با استفاده از ViewBag

دقت کنید که اگر میخواید از ViewBag برای تست true یا false بودن استفاده کنید بهتره به صورت زیر استفاده بشه:

@if (ViewBag.IsActive == 'true')
{
   <div></div>
}

چون مقدار درون ViewBag به صورت رشته string ذخیره میشه و true و false رو پیش فرض نمیشناسه.

به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
2 نظر
hastia : سوالم اینه که با توجه به اینکه active code رو از ورودی میگیرم دایم موقع تریس null میاد داخل چرا؟و اینکه چون خروجی به صورت ActiveEmailResult.Error هست الان در ویو مقدارش چی میشه true, false نمیشه درسته ؟حالا اینو باید چطوری چک کرد در ویو؟

امتیاز کاربر : 1   رتبه کاربر : 152   تاریخ ثبت : 11:15 1401/06/24
hastia : می خوام تست کنم از لینک localhost:44385/account/ActiveEmailAccount/ddd8915deba74659be3ca89fdc118f14 هر کاری میکنم کد ddd8915deba74659be3ca89fdc118f14 رو توی ورودی نمیگیره منظورم این بود که میکم نال وارد میشه

امتیاز کاربر : 1   رتبه کاربر : 152   تاریخ ثبت : 01:44 1401/06/24
پاسخ دهنده : hamid_b 19:44 1401/06/24

کار اولی که باید کنید در اکشن ActiveEmailAccount یک بریک پوینت بذارید و بررسی کنید که ViewBag.IsActive در خود اکشن مقدار داره یا نه. نکته بعدی اینکه شما در انتهای متد نوشتید :

return View(active);

آیا شما View به نام active دارید ؟ یعنی مطمئن هستید اسم View رو درست نوشتید ؟

به این پاسخ امتیاز بدهید    0
امتیاز: 518 رتبه: 4
2 نظر
hastia : کد ها رو اصلاح کردم و با viewdata حالا میخوام بفرستم . که فرستاده میشه به ویو. ویو هم چیزی نداره یه تک p هست که فعال و فعال نبودن کاربر رو نشون بده دیکه. مگه نباید همون رو بدم به ویو؟ مشکل اینه که هر برک ئوین می دارم همه اش active رو که یه استرینگ هست که همون activecode توی دیتا بیس هست و اصلا نمیگیردش وارد کنترلر نمیشه . اینو نمی دونم کجاش رو اشتباه نوشتم که هر کاری میکنم نمگیره

امتیاز کاربر : 1   رتبه کاربر : 152   تاریخ ثبت : 08:20 1401/06/24
hastia : این ویو مدل من هست که در ورودی همین string به نام active رو قراره بکیره public class EmailActiveAccountViewModel { public string EmailActiveCode { get; set; } } public enum ActiveEmailResult { Success, NotActive, Error, }

امتیاز کاربر : 1   رتبه کاربر : 152   تاریخ ثبت : 09:16 1401/06/24
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود