ساخت View Model از رابطه many to many و دریافت model از view برای ذخیره داده ها
با عرض سلام خدمت اساتید گرامی
Entitty Framework
من دو کلاس دارم که با هم رابطه many to many دارند . به صورت زیر:
public class GroupAndChannel
{
public GroupAndChannel()
{
GacId = Guid.NewGuid();
Tags = new List<Tag>();
}
[ForeignKey("ApplicationUser")]
public string UserId { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
[Key]
public Guid GacId { get; set; }
public string JoinLink { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public int Members { get; set; }
public string Language { get; set; }
public string OtherLanguage { get; set; }
public int Grade { get; set; }
public string Description { get; set; }
public DateTime Register { get; set; }
}
و کلاس دیگر هم به صورت زیر:
public class Tag
{
public Tag()
{
GrupAndChannels = new List<GroupAndChannel>();
}
public int TagId { get; set; }
public string TagName { get; set; }
public bool IsSelected{ get; set; }
public int InGroup { get; set; }
public int InChannel { get; set; }
public int InTotal { get; set; }
public virtual ICollection<GroupAndChannel> GrupAndChannels { get; set; }
}
1- وقتی یک رکورد می خوام ثبت کنم باید بتونم از لیست باکس تگ ها یک یا چند تا تگ رو انتخاب کنم .
- چطور یک ویو مدل بسازم که بتونم ازش برای لیست باکس استفاده کنم ؟
- یا بیام لیست تگ ها رو از دیتابیس بخونم و بریزم توی یک ViewBag و به لیست باکس ارسال کنم ؟
2-وقتی فرم ارسال شد چطور مقادیر لیست باکس رو دریافت کنم و به کالکشن تگ ها اضافه کنم ؟
می دونید که وقتی رابطه چند به چند داریم entity خودش یک جدول میانی میسازه که شامل آی دی های دو جدولی است که این رابطه رو دارند.چطور داده ها را به این جداول و جدول میانی اضافه کنم ؟
نقل قول: ساخت View Model از رابطه many to many و دریافت model از view برای ذخیره داده ها
سلام
ویومدل بدین صورت طراحی کنید که شامل فیلدهای لازم وضروری در ویو باشند
public class GroupAndChannelViewModel
{
public string UserId { get; set; }
public Guid GacId { get; set; }
public string JoinLink { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public int Members { get; set; }
public string Language { get; set; }
public string OtherLanguage { get; set; }
public int Grade { get; set; }
public string Description { get; set; }
public DateTime Register { get; set; }
public List<Tag> Tags { get; set; }
public int[] TagId{ get; set; }
}
فرض کنید کنترولر بدین صورت باشه
public virtual ActionResult Index;/lo/( nnnnnj)
{
var model = new GroupAndChannelViewModel
{
............Tags = _Service")
};
return View(model);
}
اگر توجه کنید یک ارایه از نوع int تعریف شده
این ارایه برای دریافت کد تگها از قسمت ویو هست
و الان باید از یک لیست باکس یا دراپ داوون باکس با خاصیت Multiple توی ویو داده ها رو پر کنید
@Html.DropDownListFor(m => m.TagId, new MultiSelectList(Model.Tags, "TagId", "TagName"), new {@class = "form-control multiselect input-sm no-padding", multiple = "multiple", id = "TagId", })
این قسمت همون ارایه هست
m => m.TagId,
میتونید از پلاگین هایی مثل Chosen برای تزیین لیست باکس استفاده کنید تا زیبا تر بشه
حالا برای درج مقادیر ارسالی ارایه د رسمت کنترولر و درج چند به چند , مقادیر ارایه رو با یک حلقه بریزید توی یک لیست از نوع Tag و این لیست رو انتساب بدید به GroupAndChannel.Tags
نقل قول: ساخت View Model از رابطه many to many و دریافت model از view برای ذخیره داده ها
ممنون به خاطر وقتی که گذاشتید .
مثل ساعت کار می کنه