دسته بندی ها
23:23 1399/06/31

ارسال نشدن مقادیر Model از View به Controller در Asp.net Core

مشخصات سوال کننده :
کاربر : shimaa     امتیاز کاربر : 0     رتبه کاربر : 7059
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2927
1 نظر
saedbfd : لطفا کدهای خودتون رو از طریق دکمه کد در ادیتور قرار بدید و عکس کد نذارید. نکته بعدی اینکه خب خطایی که دارید چی هست ؟

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 01:33 1399/07/01
هوش مصنوعی

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

برای حل مشکل عدم ارسال مقادیر مدل از View به Controller در ASP.NET Core، می توانید مراحل زیر را بررسی کنید:

1. **بررسی نام های ورودی فرم**: اطمینان حاصل کنید که نام های ورودی (input names) در فرم شما با نام های خواص مدل شما (Model) همخوانی دارند. اگر نام ها همخوانی نداشته باشند، مقادیر به درستی به Controller ارسال نخواهند شد.

2. **استفاده از تگ <form> مناسب**: اطمینان حاصل کنید که فرم شما شامل تگ <form> با خاصیت method="post" و asp-action صحیح است.

<form asp-action="Create" method="post">
    <input type="text" name="UserName" />
    <input type="email" name="Email" />
    <input type="submit" value="ایجاد">
</form>

3. **مدل Binding**: اطمینان حاصل کنید که در Controller مدل به درستی به عنوان پارامتر ورودی روش (Action) تعیین شده است.

public IActionResult Create(UserModel model)
{
    if (ModelState.IsValid)
    {
        // کد برای ذخیره اطلاعات در دیتابیس
        return RedirectToAction("Index");
    }
    return View(model);
}

4. **مدل State**: مدل استیت (ModelState) را بررسی کنید تا ببینید آیا خطایی وجود دارد یا خیر. اگر خطایی وجود داشته باشد، داده ها به درستی منتقل نمی شوند و بهتر است اطلاعات خطا را بررسی کنید.

5. **بررسی Console**: خطاها را در Developer Console مرورگر یا Trace Logs سرور بررسی کنید تا از بروز خطاهای احتمالی مطلع شوید.

با طی این مراحل، می توانید مشکلات ارسال مقادیر از View به Controller را شناسایی و رفع کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : shimaa 20:43 1399/07/01
[HttpGet]
        public IActionResult Create()
        {
            ViewBag.ViewTitle = "فرم افزودن کاربر";
            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create(UserViewModel model, string imagename)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (imagename == null)
                    {
                        model.UserImage = "defaultuserImage.png";
                    }
                    else
                    {
                        model.UserImage = imagename;
                    }

                    ApplicationUsers user = new ApplicationUsers
                    {
                        FirstName = model.FirstName,
                        LastName = model.LastName,
                        PhoneNumber = model.PhoneNumber,
                        UserName = model.UserName,
                        Email = model.Email,
                        gender = model.gender,
                        BirthDayDate = model.BirthDayDate,
                        UserImagePath = model.UserImage
                    };

                    IdentityResult result = await _userManager.CreateAsync(user, model.Password);
                    if (result.Succeeded)
                    {
                        return RedirectToAction(nameof(Index));
                    }

                }
                catch
                {
                    throw;
                }
            }
            ViewBag.Title = "فرم ایجاد کاربر";
            return View(model);
        }
    }
}

هیچ خطایی ندارم

به این پاسخ امتیاز بدهید    0
امتیاز: 0 رتبه: 7059
پاسخ دهنده : moein 21:16 1399/07/01

سلام وقت بخیر 

در کنترلر خود روی اکشنی که داره اطلاعات رو ارسال می‌کنه که اکشن Create هست یه break point بزارید و پروژه رو اجرا کنید 

احتمال میدم یکی از مقادیر داره null ارسال میشه 

توجه داشته باشید که اگر رمز عبور داره ارسال میشه رمزعبور در asp.net core باید به صورت پیچیده باشه 

ترکیب حروف ارقام و علائم 

موفق باشید 

به این پاسخ امتیاز بدهید    0
امتیاز: 92 رتبه: 14
پاسخ دهنده : shimaa 20:02 1399/07/03

با سلام ممنون

بله مشکل رمز عبور بوده

ویرایش شده در جمعه 11 مهر 1399 ساعت 14:03:44
به این پاسخ امتیاز بدهید    0
امتیاز: 0 رتبه: 7059
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود