ورود

View Full Version : سوال: استفاده از SelectListItem در ViewModel



مجتبی کجوری
جمعه 12 مهر 1392, 16:17 عصر
سلام دوستان من می خوام اکشن متد Create را با ViewModel نمایش دهم و ویو مدل من هم شامل نام یک عکس و ID و نام آلبوم هاست که این نام آلبومها را می خوام تو یه DropDownList نمایش بدم بدین صورت:

public class GalleryViewModel
{
public int Id { get; set; }
public string PicName { get; set; }

public string Description { get; set; }
public List<GalleryGroup> _album { get; set; }
//public IEnumerable<SelectListItem> State { get; set; }
//public Gallery Form { get; set; }
public IEnumerable<SelectListItem> Album //{ get; set; }
{
get
{
var itm = _album.Select(f => new SelectListItem
{
Value = f.Id.ToString(),
Text = f.Name
});
return (itm);
}
}
}

اما نمیدونم توی کنترلر چطوری باید مقادیر را به SelectListItem پاس بدم ضمنا از الگوی Context per request استفاده می کنم

hakim22
یک شنبه 14 مهر 1392, 16:31 عصر
برای دو حالت باید کد نویسی کنید
حالت 1 - ایجاد یک مدل جدید

controller :
ViewBag.AlbumId = new SelectList(db.Genres, "AlbumId", "Name");

view :
@Html.DropDownList("AlbumId")


حالت 2 - ویرایش یک مدل که قبلا ایجاد شده

controller :
var model=findModel();
ViewBag.AlbumId = new SelectList(db.Genres, "AlbumId", "Name",model.AlbumId);

view :
@Html.DropDownList("AlbumId")


دقت کنید که همه چیز به نامگذاری دقیق ViewBag بستگی داره

مجتبی کجوری
چهارشنبه 17 مهر 1392, 17:45 عصر
سلام متشکرم از راهنماییتون اما یه مشکلی هست و اون اینکه من میخوام با ViewModel این کار بکنم (برای post کردن Data) به این صورت انجام دادم:


public ActionResult Create()
{
var model = new GalleryVM();
model._Album = _GalleryGroupservice.GetAllGalleryGroup();
return View(model);
}

[HttpPost]
public ActionResult Create(GalleryVM gvm)
{
if (this.ModelState.IsValid)
{
var model = new Gallery();
model.Description = gvm.Description;
model.PicName = gvm.PicName;
//model.GalleryGroupID = new SelectList(_GalleryGroupservice.GetAllGalleryGroup (), "ID", "Name", _GalleryService.GetAllGallery());
model.GalleryGroupID = Convert.ToInt32((from p in gvm.ListAlbum select p.Value).SingleOrDefault());
_GalleryService.AddNewGallery(model);
_uow.SaveChanges();
}
return RedirectToAction("index");
}

اما زمانی که میخوام مقادیر رو از ViewModel به DomailModel پاس بدم مقدار GalleryGroupId رو null میده نمیدونم مشکل از کجاست ممنون میشم راهنمایی کنید؟

hakim22
چهارشنبه 17 مهر 1392, 19:57 عصر
این کد رو تغییر بدید :


public IEnumerable<SelectListItem> Album //{ get; set; }
{
get
{
var itm = _album.Select(f => new SelectListItem
{
Value = f.Id.ToString(),
Text = f.Name
});
return (itm);
}
}


و کلا از SelectList استفاه کنید.

شمس11460
چهارشنبه 17 مهر 1392, 20:02 عصر
سلام.ببخشید یه سوال شما توی کلاس های mvc برنامه نویس شرکت کردین؟