مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

rooz450

عضویت از 1392/08/12

مقدار نگرفتن در کنترلر

  • پنجشنبه 3 دی 1394
  • 18:24
تشکر میکنم

با سلام

در نظر دارم یک دراپ دان لیست درست کنم با توجه به آیتم انتخاب شده id آیتم انتخاب شده را در کنترلری که از نوع post ذخیره کنم اما زمانی که یکی از آیتمهای دراپ دان لیست انتخاب می کنم و دکمه موجود در فرم کلیک می کنم خطای زیز نمایش داده می شود

یک ویومدل دارم به صورت زیر است

public class showproductViewModel
    {
        public Product producted { get; set; }

        public List<System.Web.Mvc.SelectListItem> VehicleMakeList { get; set; }

 

,و در کنترلر به صورت زیر دراپ دان لیست پر می کنم

 [HttpGet]
        public ActionResult list()
        {
            try
            {

                showproductViewModel nnn = new showproductViewModel();
                var t = db.Groups.ToList();
                nnn.ddd = t;
               

 return View(nnn);
{
            }
        [HttpPost]
        public ActionResult list(showproductViewModel t)
        {
ذخیره id آیتم
{

و در View به صورت زیر دراپ دان لیست نمایش می دهم 

   @Html.LabelFor(model => model.producted.GroupId, new { @class = "label" })
                        <div class="controls">
                            @Html.DropDownListFor(x => x.producted.GroupId, new SelectList(Model.ddd, "Id", "Name"))

آیا نحوه پر کردن dropdwonlist اشتباه است

علت خطا چیست 

 

پاسخ های این پرسش

تعداد پاسخ ها : 16 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 3 دی 1394
  • 20:20

چرا براش Propery ایجاد کردید

میتونستید از ViewBag استفاده کنید

کاربر سایت

rooz450

عضویت از 1392/08/12

  • پنجشنبه 3 دی 1394
  • 20:42

از ViewBag  استفاده می کنم خطای زیر نمایش می دهد چگونه با ویو مدل دراپ دان لیست پر کنم و id آیتم انتخاب شده را بدست آورم

لطفا راهنمایی بفرماییدcryingcrying

کاربر سایت

اصغر

عضویت از 1394/03/16

  • پنجشنبه 3 دی 1394
  • 21:15

با سلام 

برای استفاده از ViewBag در helper از دستور زیر استفاده کنید...

 



ViewBag.Category as List<SelectListItem>


 

کاربر سایت

rooz450

عضویت از 1392/08/12

  • پنجشنبه 3 دی 1394
  • 21:38

کد زیر را در کنترلر نوشتم

 var t = db.Groups.ToList();
                ViewBag.Categories = new SelectList(t, "Id", "Name");

و در view کد زیر نوشتم

@Html.DropDownListFor(model => model.producted.GroupId, ViewBag.Categories as List<SelectListItem>, "یکی از گزینه ها را انتخاب نمایید")

اما خطای پست 3 نمایش می دهد علت نمایش خطا چیست؟؟

کاربر سایت

اصغر

عضویت از 1394/03/16

  • جمعه 4 دی 1394
  • 01:31
چک کنید ببینید ، مقدار model.produced.GroupId خالی نباشه...مطمئن هستید مدل را درست پاس دادید!؟
کاربر سایت

rooz450

عضویت از 1392/08/12

  • جمعه 4 دی 1394
  • 09:13

model.produced.GroupId خالی است 

می خواهم زمانی که یکی از آیتمهای دراپ دان لیست انتخاب کردم id آیتم انتخاب شده در model.produced.GroupId  قرار بگیرد تا بتوانم id آیتم انتخاب شده در دیتابیس ذخیره کنم 

کاربر سایت

اصغر

عضویت از 1394/03/16

  • جمعه 4 دی 1394
  • 12:10

در زمان POST صفحه ، خطای پست 3 رو نشون میده یا در زمان GET ؟؟

کاربر سایت

rooz450

عضویت از 1392/08/12

  • جمعه 4 دی 1394
  • 12:56

در زمان GET

کاربر سایت

اصغر

عضویت از 1394/03/16

  • جمعه 4 دی 1394
  • 13:34

ویو بگ را به صورت زیر پر کنید :

SelectListItem a = new SelectListItem();
                List<SelectListItem> source = new List<SelectListItem>();
                foreach (var item in db.Categories.ToList())
                {
                    source.Add(new SelectListItem()
                    {
                        Text = item.Name,
                        Value = item.Id.ToString()
                    });
                }

ViewBag.Categories= source;
کاربر سایت

rooz450

عضویت از 1392/08/12

  • جمعه 4 دی 1394
  • 14:00

به وسیله دستورات پست قبل صفحه در زمان Getبدون هیچ خطایی نمایش داده می شود  

اما  در زمان POST صفحه خطای پست 3 نمایش داده می شود   

کاربر سایت

اصغر

عضویت از 1394/03/16

  • جمعه 4 دی 1394
  • 14:23
var x = ViewBag.Category as List<SelectListItem>;
                                        @Html.DropDownList("Category", x)

ViewBag.Category as List<SelectListItem>


من از این دستور استفاده می کنم و در POST با استفاده از String Category مقدار(Value) انتخاب شده را استفاده می کنم.
ولی دقت داشته باشید اگر قرار از ViewModel استفاده کنید باید قبل از ModelState.IsValid مقدار GroupId رو به مدل بدید که مدل ورودی Valid باشه ، همچنین تو این روش از هلپر DropDownList بجای DropDownListFor استفاده شده...

کاربر سایت

rooz450

عضویت از 1392/08/12

  • جمعه 4 دی 1394
  • 14:45

قسمت زیر در کجا باید بنویسیم در اکشن post یا اکشن get

var x = ViewBag.Category as List<SelectListItem>;

قسمت زیر در کجا باید بنویسیم در اکشن post یا اکشن get

ViewBag.Category as List<SelectListItem>

 

 

 

کاربر سایت

اصغر

عضویت از 1394/03/16

  • جمعه 4 دی 1394
  • 19:31
var x = ViewBag.Category as List<SelectListItem>;
                                        @Html.DropDownList("Category", x)

قسمت بالا را در View به صورت مقابل : @{کد بالا } قرار بدید ، و در متد Post از پارامتری با نوع string و نام Category قرار بدید ، هنگامی که صفحه پست میشه ، مقدار انتخاب شده در متغییر قرار میگیره...

کاربر سایت

rooz450

عضویت از 1392/08/12

  • جمعه 4 دی 1394
  • 20:16
دستورات به صورت زیر نوشتم خطای پست 3 نمایش می دهد



  List<selectlistitem>
                                source = new List<selectlistitem>
                                    ();
                                    foreach (var item in db.Groups.ToList())
                                    {
                                    source.Add(new SelectListItem()
                                    {
                                    Text = item.Name,
                                    Value = item.Id.ToString()
                                    });
                                    }

                                    ViewBag.Categories = source;
                                    @{var x = ViewBag.Categories as List<SelectListItem>;}
                                    @Html.DropDownList("Categories", x)

کاربر سایت

اصغر

عضویت از 1394/03/16

  • جمعه 4 دی 1394
  • 21:48

این دو مقاله ای که لینک دادم را مطالعه کنید ، نمونه هم دارند ، احتمالا مشکلتون برطرف میشه :
 

لینک مقاله 1

لینک مقاله 2

 

کاربر سایت

اصغر

عضویت از 1394/03/16

  • شنبه 5 دی 1394
  • 09:45

فکر میکنم مشکل ازین باشه که در برگشت شما ، DropDown رو پر نکردید ، یعنی به همون صورتی که در متد گت ، DropDown رو پر کردید در پست هم پر کنید...

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

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)