PDA

View Full Version : کار با لیست باز شو



sunn789
سه شنبه 30 مهر 1392, 23:51 عصر
سلام دوستان
به یک مشکل برخوردم دو روزه تو تاپیکهای ماکروسفت هم رفتم چیزی ندیدم
این model
public class PublicObject
{
[Key]
public int ObjectID { get; set; }
[Required]
[MaxLength(50)]
public string ObjectName { get; set; }
[Required]
[MaxLength(4000)]
public string Description { get; set; }

public virtual PublicContent publicContents { get; set; }
}
public class PublicContent
{
public int id { get; set; }
[Required]
[Display(Name="موضوع")]
public string E_Subject { get; set; }
[Required]
[Display(Name = "خلاصه")]
public string E_ShortText { get; set; }
[Required]
public string E_Title { get; set; }
[Required]
public string E_Text { get; set; }
[Required]
public string E_Image { get; set; }
public DateTime E_CreateDate { get; set; }
public virtual IList<User> Users { get; set; }
[Required]
public bool Show { get; set; }
[Required]
public bool ShowInFirstPage { get; set; }
public int Objects { get; set; }

public IEnumerable<SelectListItem> PublicObjects { get; set; }
}
}

کنترل
public ActionResult Edit(int id = 0)
{
PublicContent publiccontent = db.PublicContents.Find(id);
//IEnumerable<SelectListItem> ob =

ViewBag.ObjectList = new SelectList(db.PublicObjects, "ObjectID", "ObjectName").ToList();

if (publiccontent == null)
{
return HttpNotFound();
}
return View(publiccontent);
}
و این هم ویو
<div class="editor-label">
@Html.LabelFor(model => model.Objects)
</div>
<div class="editor-field">
@Html.DropDownList("Objects",string.Empty)
@Html.ValidationMessageFor(model => model.Objects)
</div>
البته این رو هم و خیلی دیگر رو هم امتحان کردم


<div class="editor-label">
@Html.LabelFor(model => model.Objects)
</div>
<div class="editor-field">
@Html.DropDownListFor(model=>model.PublicObjects,ViewBag.ObjectList as IEnumerable<SelectListItem>)
@Html.ValidationMessageFor(model => model.Objects)
</div>
اما زمانی که برنامه اجرا میشود و روی ذخیره تغییرات کلیک میکنم مثل این دارم

The ViewData item that has the key 'Objects' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>'.
و اگه تو کدها باز هم تغییر بدم یکی از حالتها اینکه لیست باز شو پس از زدن دکمه ذخیره تغییرات خالی میشه
لطفاً دو روزه از کار و زندگی افتادم و یا اگه مشکل از کل کاره یه روش استاندارد بفرمایید تا لیست باز شو رو پر کنم و ID اون متن رو توی جدول ذخیره کنم
با تشکر

hakim22
چهارشنبه 01 آبان 1392, 07:50 صبح
به این تاپیک سر بزنید :

http://barnamenevis.org/showthread.php?422265-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-SelectListItem-%D8%AF%D8%B1-ViewModel&p=1890822#post1890822

در اینجا ViewBag.ObjectList را به ViewBag.Objects تغییر نام دهید. ASP MVC بر اساس پیشفرض هایی که درباره ی نام گذاری دارد مقدار DropDown را پر میکند.

sunn789
پنج شنبه 02 آبان 1392, 02:20 صبح
میشه برای اینکه یه لیست باز شو رو پر کنیم و ای دی رو توی بانک والد ذخیره کنیم توضیح بدین یا یه مقاله که مقید باشه امروز سه روزه اینترنت رو میگردم
تازه بیشترش هم انگلیسی
شاید به خاطر بی سوادیمه
البته اینجوری تغییرش دادم اما کار نکرد
[Required]
[Display(Name="نمایش در صفحه اول")]
public bool ShowInFirstPage { get; set; }

[Display(Name = "موضوع اصلی")]
public int Objects { get; set; }

public IList<PublicObject> PublicObjec { get; set; }
public IEnumerable<SelectListItem> PublicObjects {
get{
var itm = PublicObjec.Select(f => new SelectListItem {
Value= f.ObjectID.ToString(),
Text = f.ObjectName

});
return (itm);
} }
کنترل
ViewBag.ObjectID = new SelectList(db.PublicContents, "Value", "Text").ToList();
وییو

@Html.DropDownList("ObjectID")
خطا

DataBinding: 'System.Data.Entity.DynamicProxies.PublicContent_4 D7536C90E025B8BA7E2E2B3E372089833B966FE7EEDB288360 4AE7A9639AFF7' does not contain a property with the name 'Value'.

sunn789
جمعه 03 آبان 1392, 21:11 عصر
مشکل از این بود که فیلد قبلی رو که از ادرس عکس بود پر نمیکردم و وقتی دوباره برای کنترل ارسال میشد لیست بازشو پر نمیشد برا ی همین خطا میداد ، حالا توی اپلود عکس گیر کردم این هم خودش معضلی شده