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

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

خطا در اجرا

جمعه, 07 اسفند 1394 01:28

خطا در اجرا

من بعد از ارسال فرم به server با خطا زیر مواجه شدم

The ViewData item that has the key 'ETProjectTypeId' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>'.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: The ViewData item that has the key 'ETProjectTypeId' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>'.

Source Error:
 


 
Line 36: @Html.LabelFor(model => model.ETProjectTypeId, htmlAttributes: new { @class = "control-label col-md-2" }) Line 37: <div class="col-md-4"> Line 38: @Html.DropDownList("ETProjectTypeId", (SelectList)ViewBag.ProjectTypes, "-- انتخاب ---", new { @id = "rdbProjectType" }) Line 39: @Html.ValidationMessageFor(model => model.ETProjectTypeId, "", new {@class = "text-danger"}) Line 40: </div>
 
ممنون از کمک دوستان
جمعه, 07 اسفند 1394 07:33

مدل معتبر نمیباشد و سعی دارد View را مجدد پر کند که یک لیست برای DropDown با نام ETProjectTypeId وجود ندارد

کد دو اکشن Get و  Post این عملیات را قرار دهید تا راهنماییتون کنم

جمعه, 07 اسفند 1394 09:49

 // GET: Project/Create
        public ActionResult Create()
        {
            ViewBag.ProjectTypes = new SelectList(db.EnumType.Where(f => f.EnumID == 11).ToList(), "EnumTypeID", "EnumPersianType");
            //ViewBag.ProjectTypes = new SelectList((from q in db.EnumType where q.EnumID == 11 select new { ETProjectTypeId = q.EnumTypeID, Name = q.EnumPersianType }), "ETProjectTypeId", "Name");
            ViewBag.Attrects = new SelectList(db.EnumType.Where(f => f.EnumID == 12).ToList(), "EnumTypeID", "EnumPersianType");
            ViewBag.Ministryes = new SelectList(db.EnumType.Where(f => f.EnumID == 14).ToList(), "EnumTypeID", "EnumPersianType");
            ViewBag.Employers = new SelectList(db.EnumType.Where(f => f.EnumID == 15).ToList(), "EnumTypeID", "EnumPersianType");
            ViewBag.Consultants = new SelectList(db.EnumType.Where(f => f.EnumID == 16).ToList(), "EnumTypeID", "EnumPersianType");
            ViewBag.Qorbs = new SelectList(db.Qorbs, "QorbId", "Title");
            ViewBag.QorbUnitId = new SelectList(db.QorbUnit, "QorbUnitID", "Title");
            ViewBag.Countryes = new SelectList(db.EnumType.Where(f=>f.EnumID==8), "EnumTypeID", "EnumPersianType");
            ViewBag.Provinces = new SelectList(db.EnumType.Where(f => f.EnumID == 9), "EnumTypeID", "EnumPersianType");
            ViewBag.ETTownshipId = new SelectList(db.EnumType.Where(f => f.EnumID == 10), "EnumTypeID", "EnumPersianType");
            ViewBag.ETGettingMethodId = new SelectList(db.EnumType.Where(f => f.EnumID == 17), "EnumTypeID", "EnumPersianType");
            ViewBag.ETStatusCodeId = new SelectList(db.EnumType.Where(f => f.EnumID == 18), "EnumTypeID", "EnumPersianType");
            ViewBag.ETCountractTypeId = new SelectList(db.EnumType.Where(f => f.EnumID == 19), "EnumTypeID", "EnumPersianType");
            ViewBag.ETBudgetAllocationsId = new SelectList(db.EnumType.Where(f => f.EnumID == 20), "EnumTypeID", "EnumPersianType");
            
            return View();
        }

        // POST: Project/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Create([Bind(Include = "ID,ProjectName,Description,ETProjectTypeId,ETAttrectId,Number,StartDate,CommitDate,EndDate,LenghtMonth,NumberSecond,CommitDateNumber,CommitType,ETMinistryId,ETEmployerId,ETConsultantId,QorbUnitId,ETCountryId,ETProvinceId,ETTownshipId,Address,ETGettingMethodId,ETStatusCodeId,ETCountractTypeId,ETBudgetAllocationsId")] Project project)
        {
            if (ModelState.IsValid)
            {
                db.Project.Add(project);
                await db.SaveChangesAsync();
                return RedirectToAction("Index");
            }

            return View(project);
        }

جمعه, 07 اسفند 1394 10:10

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

جمعه, 07 اسفند 1394 21:55

متغییری که داخل dropdownlist تعریف کرده اید و با viewbag پاس دادید باید هم در متد get باشد و هم در متد post قرار بگیرد.

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید