سلاام ...
و این viewmodel رو توی متد Edit Resume استفاده کردم که متد get بصورت زیر ::
و view این متد بصورت زیر هست البته قسمتی از آن ::
و مشکل اینجاست که بعد از ثبت اطلاعات وقتی به متد post میره مقدارش null هستش ... درحالیکه فقط در صورت edit اینجوریه وقتی از همین viewmodel برای مشاهده رزومه که فقط گزارشگیریه استفاده میکنم نتیجه را میبینم ولی اینجا نه !
من تاجاییکه میتونستم چیزهایی که درباره viemodel و automapper توی سایت بود رو خوندم ولی چیزی که میخواستم را پیدا نکردم شاید هم درک درستی ازش نداشتم در کل سوال سوال من از شما دوستان اینه :
یک viewmodel دارم که از چندین جدول توی db ایجاد شده که در زیر نوشتمش :
public class ResumeViewModel { public ResumeViewModel() { } public ResumeViewModel(IEnumerable<Resume> resum, IEnumerable<Work_Experience_Job_Seeker> workExperienceJobSeekerOfViewModel, IEnumerable<Job_Expertises> jobExpertisesOfViewModel, IEnumerable<Degrees_Work_Experience_Required> degreesWorkExperienceRequiredOfViewModel, IEnumerable<Specialized_Course> specializedCourseOfViewModel, IEnumerable<Book_Published> bookPublishedOfViewModel, IEnumerable<Basic_Table> basicTable) { ResumeOfViewModel = resum; WorkExperienceJobSeekerOfViewModel = workExperienceJobSeekerOfViewModel; JobExpertisesOfViewModel = jobExpertisesOfViewModel; DegreesWorkExperienceRequiredOfViewModel = degreesWorkExperienceRequiredOfViewModel; SpecializedCourseOfViewModel = specializedCourseOfViewModel; BookPublishedOfViewModel = bookPublishedOfViewModel; BasicTable = basicTable; } public IEnumerable<Resume> ResumeOfViewModel { get; set; } public IEnumerable<Work_Experience_Job_Seeker> WorkExperienceJobSeekerOfViewModel { get; set; } public IEnumerable<Job_Expertises> JobExpertisesOfViewModel { get; set; } public IEnumerable<Degrees_Work_Experience_Required> DegreesWorkExperienceRequiredOfViewModel { get; set; } public IEnumerable<Specialized_Course> SpecializedCourseOfViewModel { get; set; } public IEnumerable<Book_Published> BookPublishedOfViewModel { get; set; } public IEnumerable<Basic_Table> BasicTable { get; set; } public int NumberForm { get; set; } // EditResumes.chtml & ShowResumes.chtml ===> baraye select kardan formha :D }
[HttpGet] public ActionResult EditResumes(int id) { var contex = new Final_My_ProjectEntities2(); var res1 = contex.Resumes.Where(rec => rec.Resume_ID == id); var res2 = contex.Work_Experience_Job_Seeker.Where(rec => rec.Resume_ID == id).ToList(); var res3 = contex.Job_Expertises.Where(rec => rec.Resume_ID == id).ToList(); var res4 = contex.Degrees_Work_Experience_Required.Where(rec => rec.Resume_ID == id).ToList(); var res5 = contex.Specialized_Course.Where(rec => rec.Resume_ID == id).ToList(); var res6 = contex.Book_Published.Where(rec => rec.Resume_ID == id).ToList(); var res12 = contex.Basic_Table.ToList(); var viewModel = new ResumeViewModel(res1, res2, res3, res4, res5, res6,res12); var items = new SelectList( new[] { new {Value = "1", Text = "فرم مهارت ها"}, new {Value = "2", Text = "فرم کتاب/مقالات منتشر شده"}, new {Value = "3", Text = "فرم سابقه کاری"}, new {Value = "4", Text = "فرم دورههای تخصصی گذرانده"}, new {Value = "5", Text = "فرم تخصصهای شغلی"}, new {Value = "6", Text = "فرم مدارک تحصیلی"} }, "Value", "Text"); ViewBag.Form = new SelectList(items, "Value", "Text"); var res7 = contex.Basic_Table.Where(rec => rec.Domain == "MilitaryStatus").ToList(); ViewBag.MilitaryStatus = new SelectList(res7, "Value", "Meaning",res1); var res8 = contex.Basic_Table.Where(rec => rec.Domain == "Sex"); ViewBag.Sex = new SelectList(res8, "Value", "Meaning", res1); var res9 = contex.Basic_Table.Where(rec => rec.Domain == "MartialStatus").ToList(); ViewBag.MartialStatus = new SelectList(res9, "Value", "Meaning", res1); var res10 = contex.Basic_Table.Where(rec => rec.Domain == "Degree").ToList(); ViewBag.Degree = new SelectList(res10, "Value", "Meaning"); var res11 = contex.Basic_Table.Where(rec => rec.Domain == "Ability").ToList(); ViewBag.Ability = new SelectList(res11, "Value", "Meaning"); return View(viewModel); }
@model Final_My_Project.ViewModels.ResumeViewModel @{ ViewBag.Title = "ویرایش رزومه"; ViewBag.PartOne = "فرم مهارت ها"; ViewBag.PartTwo = "فرم کتاب/مقالات منتشر شده"; ViewBag.Part3 = "فرم سابقه کاری"; ViewBag.Part4 = "فرم دورههای تخصصی گذرانده"; ViewBag.Part5 = "فرم تخصصهای شغلی"; ViewBag.Part6 = "فرم مدارک تحصیلی"; } <h2 style="font-family: Arial;">@ViewBag.Title</h2><br/> <script type="text/javascript"> $(function () { $('#Gender').change(function () { var selectKind = $(this).find('option:selected').text(); var divMilitary; if (selectKind == "زن") { divMilitary = $('#Military'); divMilitary.hide(); divMilitary.css('display', 'none'); } else if (selectKind == "مرد") { divMilitary = $('#Military'); divMilitary.show(); divMilitary.css('display', 'block'); } }); }); </script> <script type="text/javascript"> $(function () { $('#SelectForm').change(function () { var selectFrom = $(this).find('option:selected').text(); if (selectFrom == "فرم مهارت ها") { $('#PartOne').show(); $('#PartOne').css('display', 'block'); $('#PartTwo').hide(); $('#PartTwo').css('display', 'none'); $('#Part3').hide(); $('#Part3').css('display', 'none'); $('#Part4').hide(); $('#Part4').css('display', 'none'); $('#Part5').hide(); $('#Part5').css('display', 'none'); $('#Part6').hide(); $('#Part6').css('display', 'none'); } if (selectFrom == "فرم کتاب/مقالات منتشر شده") { $('#PartTwo').show(); $('#PartTwo').css('display', 'block'); $('#PartOne').show(); $('#PartOne').css('display', 'none'); $('#Part3').hide(); $('#Part3').css('display', 'none'); $('#Part4').hide(); $('#Part4').css('display', 'none'); $('#Part5').hide(); $('#Part5').css('display', 'none'); $('#Part6').hide(); $('#Part6').css('display', 'none'); } if (selectFrom == "فرم سابقه کاری") { $('#Part3').show(); $('#Part3').css('display', 'block'); $('#PartTwo').hide(); $('#PartTwo').css('display', 'none'); $('#PartOne').show(); $('#PartOne').css('display', 'none'); $('#Part4').hide(); $('#Part4').css('display', 'none'); $('#Part5').hide(); $('#Part5').css('display', 'none'); $('#Part6').hide(); $('#Part6').css('display', 'none'); } if (selectFrom == "فرم دورههای تخصصی گذرانده") { $('#Part4').show(); $('#Part4').css('display', 'block'); $('#PartTwo').hide(); $('#PartTwo').css('display', 'none'); $('#PartOne').show(); $('#PartOne').css('display', 'none'); $('#Part3').hide(); $('#Part3').css('display', 'none'); $('#Part5').hide(); $('#Part5').css('display', 'none'); $('#Part6').hide(); $('#Part6').css('display', 'none'); } if (selectFrom == "فرم تخصصهای شغلی") { $('#Part5').show(); $('#Part5').css('display', 'block'); $('#PartTwo').hide(); $('#PartTwo').css('display', 'none'); $('#PartOne').show(); $('#PartOne').css('display', 'none'); $('#Part3').hide(); $('#Part3').css('display', 'none'); $('#Part4').hide(); $('#Part4').css('display', 'none'); $('#Part6').hide(); $('#Part6').css('display', 'none'); } if (selectFrom == "فرم مدارک تحصیلی") { $('#Part6').show(); $('#Part6').css('display', 'block'); $('#Part5').show(); $('#Part5').css('display', 'none'); $('#PartTwo').hide(); $('#PartTwo').css('display', 'none'); $('#PartOne').show(); $('#PartOne').css('display', 'none'); $('#Part3').hide(); $('#Part3').css('display', 'none'); $('#Part4').hide(); $('#Part4').css('display', 'none'); } }); }); </script> @Html.DropDownListFor(m=>m.NumberForm, (SelectList)ViewBag.Form, new { id = "SelectForm" }) @using (Html.BeginForm()) { @Html.ValidationSummary(true) <div id="PartOne" > <h3 style="font-family: Arial; color: #008080; font-weight: bold; ">@ViewBag.PartOne</h3><br/> @foreach (var item in Model.ResumeOfViewModel) { <table dir="rtl"> <tr> <td> @Html.Label("عنوان رزومه") </td> <td> @Html.TextBoxFor(model =>item.Title_Of_Resume , new {@class = "text", style = "width:100 px"}) @Html.ValidationMessageFor(model => item.Title_Of_Resume) </td> </tr> <tr> <td> <div id="Gender" > @Html.Label("نوع جنسیت") @Html.DropDownList("نوع جنسیت", new SelectList(ViewBag.Sex, "Value", "Text", item.Sex_ID == 0 ? 0 : item.Sex_ID)) @Html.ValidationMessageFor(model => item.Sex_ID) </div> </td> <td> <div > @Html.Label("وضعیت تاهل") @Html.DropDownList("وضعیت تاهل", new SelectList(ViewBag.MartialStatus, "Value", "Text", item.Martial_Status_ID == 0 ? 0 : item.Martial_Status_ID)) @Html.ValidationMessageFor(model => item.Martial_Status_ID) </div> </td> </tr> <tr id="Military" style="display: none;"> <td> @Html.Label("وضعیت نظام وظیفه") </td> <td> @Html.DropDownList("وضعیت نظام وظیفه", new SelectList(ViewBag.MilitaryStatus, "Value", "Text", item.Military_Status_ID == 0 ? 0 : item.Military_Status_ID), new { id = "Gender" }) @Html.ValidationMessageFor(model => item.Military_Status_ID) </td> </tr> <tr> <td> @Html.Label("آشنایی با رایانه") </td> <td> @Html.DropDownListFor(model => item.Knowledge_Of_Computers_ID, (SelectList)ViewBag.Ability) @Html.ValidationMessageFor(model => item.Knowledge_Of_Computers_ID) </td> </tr> <tr> <td> @Html.Label("آشنایی با امور اداری و دفتری") </td> <td> @Html.DropDownListFor(model => item.Knowledge_Administrative_and_Clerical_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model => item.Knowledge_Administrative_and_Clerical_ID) </td> </tr> <tr> <td> @Html.Label("آشنایی با زبان انگلیسی") </td> <td> @Html.DropDownListFor(model => item.Knowledge_Of_English_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model => item.Knowledge_Of_English_ID) </td> </tr> <tr> <td> @Html.Label("آشنایی با زبان عربی") </td> <td> @Html.DropDownListFor(model => item.Knowledge_Of_Arabic_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model => item.Knowledge_Of_Arabic_ID) </td> </tr> <tr> <td> @Html.Label("آشنایی با ماکروسافت آفیس") </td> <td> @Html.DropDownListFor(model =>item.Knowledge_Of_Office_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model => item.Knowledge_Of_Office_ID) </td> </tr> <tr> <td> @Html.Label("آشنایی با امور مالی و حسابداری") </td> <td> @Html.DropDownListFor(model =>item.Knowledge_Of_Finance_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model => item.Knowledge_Of_Finance_ID) </td> </tr> <tr> <td> @Html.Label("آشنایی با مدیریت") </td> <td> @Html.DropDownListFor(model =>item.Knowledge_Of_Manage_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model =>item.Knowledge_Of_Manage_ID) </td> </tr> <tr> <td> @Html.Label("گواهینامه رانندگی پایه یک") </td> <td> @Html.DropDownListFor(model =>item.Driving_license_One_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model =>item.Driving_license_One_ID) </td> </tr> <tr> <td> @Html.Label("گواهینامه رانندگی پایه دو") </td> <td> @Html.DropDownListFor(model =>item.Driving_license_Two_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model =>item.Driving_license_Two_ID) </td> </tr> <tr> <td> @Html.Label("گواهینامه رانندگی پایه موتورسیکلت") </td> <td> @Html.DropDownListFor(model =>item.Certificate_Motor_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model =>item.Certificate_Motor_ID) </td> </tr> <tr> <td> @Html.Label("ماشین شخصی") </td> <td> @Html.DropDownListFor(model =>item.Personal_Vehicle_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model =>item.Personal_Vehicle_ID) </td> </tr> <tr> <td> @Html.Label("روابط عمومی") </td> <td> @Html.DropDownListFor(model =>item.Public_Relationship_ID, (SelectList) ViewBag.Ability) @Html.ValidationMessageFor(model =>item.Public_Relationship_ID) </td> </tr> <tr> <td> @Html.Label("دیگر توانایی ها") </td> <td> @Html.EditorFor(model =>item.Etc_Ability) @Html.ValidationMessageFor(model =>item.Etc_Ability) </td> </tr> </table> } </div> <p> <input type="submit" value="Save" onclick="return confirm('از ثبت اطلاعات مطمئن هستید؟')" /> </p> } <div> @Html.ActionLink("بازگشت به مدیریت رزومه ها", "ManageOfResumes") </div> @section scripts { @Scripts.Render("~/bundles/jqueryval") }
متد پست بصورت زیر هستش ... اگر میدونید چطور و چی کار کنم که این درست شه ممنون میشم ... چون دیگه نمیدونم تو متد پست چی بنویسم ... منتظر جوابم ... که چرا null میده و اینکه تو متد پست چطور اینارو ذخیره کنم توی db .../؟
[HttpPost] public ActionResult EditResumes(ResumeViewModel model) // model null mishe ! CHERAA??! { var contex = new Final_My_ProjectEntities2(); try { if (ModelState.IsValid) { // Code... che cody? contex.SaveChanges(); } } catch (Exception) { ViewBag.wrong = "لطفا دادههای ورودی را بررسی نمایید"; } return View(model); }