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

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

کاربر سایت

shayanmaster

عضویت از 1395/03/21

مشکل با ViewDATA

  • پنجشنبه 3 تیر 1395
  • 12:55
تشکر میکنم

با سلام و خسته نباشی

من با استفاده از این آموزش DropDownList تودرتو در MVC  یه صفحه ثبت محصول درست کردم ولی ارور زیر را میده ولی اطلاعات داخل جدول ذخیره میشه.

An exception of type 'System.InvalidOperationException' occurred in System.Web.Mvc.dll but was not handled in user code

Additional information: There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'Brands'.

این هم کد داخل کنترل یوزرم لطفا راهنمایی کنید .

 
[HttpPost]
public ActionResult InsertProduct(Table_Device dev,int Brands,int Models,int ColorID,int StorageID)
{
if (Session["Username"] == null)
return RedirectToAction("Index", "User");
if (!ModelState.IsValid)
{
ViewBag.Message = "پرکردن تمامی فیلدها الزامیست";
ViewBag.Style = "color:red";
return View();
}
 
string User = Session["Username"].ToString();
 
dev.UserID = db.Table_Users.Where(a => a.Username.Equals(User)).SingleOrDefault().UserID;
dev.DeviceBrandID = Brands;
dev.DeviceModelID = Models;
dev.DeviceColorID = ColorID;
dev.DeviceStorageID = StorageID;
dev.DeleteDevice = 0;
dev.PaidInsurance = 0;
db.Table_Device.Add(dev);
 
if (Convert.ToBoolean(db.SaveChanges()))
{
ViewBag.Message = "با موفقیت ثبت شد";
ViewBag.Style = "color:green";
return View();
}
else
{
ViewBag.Message = "متاسفانه ارسال نشد";
ViewBag.Style = "color:red";
return View();
}
}

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

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

ایمان مدائنی

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

  • پنجشنبه 3 تیر 1395
  • 16:13

مشکل را چیدا کردم

کدد اکشن Get را نیز قرار بدید تتا براتون اصلاح کنم

کاربر سایت

shayanmaster

عضویت از 1395/03/21

  • پنجشنبه 3 تیر 1395
  • 17:16

ممنون

 
[HttpGet]
public ActionResult InsertProduct()
{
if (Session["Username"] == null)
{
return RedirectToAction("Index", "Home");
}
if (Session["Username"] != null)
{
ViewBag.Brands = new SelectList(db.Table_Brand, "BrandID", "Brand");
ViewBag.Models = new SelectList(new List<Table_ModelBrand>(), "ModelID", "Model");
return View();
}
else
{
ViewBag.Message = "متاسفانه شما امکان دسترسی به این بخض را ندارید";
ViewBag.Style = "Color:red";
return View();
}
}
public IList<Table_ModelBrand> Getstate(int id)
{
return db.Table_ModelBrand.Where(m => m.BrandID == id).ToList();
}
 
public JsonResult GetJsonState(int id)
{
var stateListt = this.Getstate(Convert.ToInt32(id));
var statesList = stateListt.Select(m => new SelectListItem()
{
Text = m.Model,
Value = m.ModelID.ToString()
});
return Json(statesList, JsonRequestBehavior.AllowGet);
}
 
[HttpPost]
public ActionResult InsertProduct(Table_Device dev,int Brands,int Models,int ColorID,int StorageID)
{
if (Session["Username"] == null)
return RedirectToAction("Index", "User");
if (!ModelState.IsValid)
{
ViewBag.Message = "پرکردن تمامی فیلدها الزامیست";
ViewBag.Style = "color:red";
return View();
}
 
string User = Session["Username"].ToString();
 
dev.UserID = db.Table_Users.Where(a => a.Username.Equals(User)).SingleOrDefault().UserID;
dev.DeviceBrandID = Brands;
dev.DeviceModelID = Models;
dev.DeviceColorID = ColorID;
dev.DeviceStorageID = StorageID;
dev.DeleteDevice = 0;
dev.PaidInsurance = 0;
db.Table_Device.Add(dev);
 
if (Convert.ToBoolean(db.SaveChanges()))
{
ViewBag.Message = "با موفقیت ثبت شد";
ViewBag.Style = "color:green";
return View();
}
else
{
ViewBag.Message = "متاسفانه ارسال نشد";
ViewBag.Style = "color:red";
return View();
}
}

 

کاربر سایت

ایمان مدائنی

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

  • پنجشنبه 3 تیر 1395
  • 20:08

به شکل زیر بنویسید ببینید مشکل برطرف میشه

[HttpPost]
public ActionResult InsertProduct(Table_Device dev,int Brands,int Models,int ColorID,int StorageID)
{
if (Session["Username"] == null)
return RedirectToAction("Index", "User");
if (!ModelState.IsValid)
{
ViewBag.Message = "پرکردن تمامی فیلدها الزامیست";
ViewBag.Style = "color:red";
ViewBag.Brands = new SelectList(db.Table_Brand, "BrandID", "Brand");
ViewBag.Models = new SelectList(new List<Table_ModelBrand>(), "ModelID", "Model");
return View();
}
 
string User = Session["Username"].ToString();
 
dev.UserID = db.Table_Users.Where(a => a.Username.Equals(User)).SingleOrDefault().UserID;
dev.DeviceBrandID = Brands;
dev.DeviceModelID = Models;
dev.DeviceColorID = ColorID;
dev.DeviceStorageID = StorageID;
dev.DeleteDevice = 0;
dev.PaidInsurance = 0;
db.Table_Device.Add(dev);
 
if (Convert.ToBoolean(db.SaveChanges()))
{
ViewBag.Message = "با موفقیت ثبت شد";
ViewBag.Style = "color:green";
ViewBag.Brands = new SelectList(db.Table_Brand, "BrandID", "Brand");
ViewBag.Models = new SelectList(new List<Table_ModelBrand>(), "ModelID", "Model");
return View();
}
else
{
ViewBag.Message = "متاسفانه ارسال نشد";
ViewBag.Style = "color:red";
ViewBag.Brands = new SelectList(db.Table_Brand, "BrandID", "Brand");
ViewBag.Models = new SelectList(new List<Table_ModelBrand>(), "ModelID", "Model");
return View();
}
}

 

کاربر سایت

shayanmaster

عضویت از 1395/03/21

  • پنجشنبه 3 تیر 1395
  • 20:18

بله ارورم رفع شد . با تشکر فراوان

فقط چطور میشه بعد از ثبت , فرم خالی بشه ؟ 

کاربر سایت

ایمان مدائنی

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

  • جمعه 4 تیر 1395
  • 07:10

متونید کاربر را به همین صفحه Redirec کنید

از return redirect استفاده کنید و آدرس همین صفحه را قرار دهید

کاربر سایت

shayanmaster

عضویت از 1395/03/21

  • جمعه 4 تیر 1395
  • 21:31

ممنون , بخاطر پیغام تو صفحه از روش زیر استفاده کردم .

ModelState.Clear();
کاربر سایت

iteitman

عضویت از 1395/04/14

  • یکشنبه 18 مهر 1395
  • 12:49

با سلام خدمت دوستان

بنده هم این مشکل رو دارم و این راه حل رو هم امتحان کردم اما بازهم همون ارور رو میده و اطلاعات ذخیره نمیشن

البته من لیست های که به مدلم میفرستم از یه مدل دیگه ست 

اگه راهنمایی بفرماید ممنون میشم

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

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

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

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