public ActionResult AddFood() { var model = new AddFoodViewModel(); List<System.Web.Mvc.SelectListItem> items = new List<System.Web.Mvc.SelectListItem>(); var list = db.GetStuff(); foreach (var item in list) { items.Add(new System.Web.Mvc.SelectListItem { Text = item.Name.ToString(), Value = item.Id.ToString(), }); } model.List =items; return View(model); }
این هم کد ویو:
@for (int i = 0; i < Model.List.Count(); i++) { <div class="col-md-2 marginbot20 "> @Html.CheckBoxFor(m => m.List[i].Selected) @Html.DisplayFor(m => m.List[i].Text) @Html.HiddenFor(m => m.List[i].Value) @Html.HiddenFor(m => m.List[i].Text) </div> }
سلام دوستان من از selceteditemlist استفاده کردم و یه سری ایتم ها رو نمایش میدم.چطور میتونم درکنار هر چک باکس یک اینپوت باکس داشته باشم که بتونم درباره هرکدوم یه نظری بنویسم و با زدن دکمه ثبت ایتمهای انتخاب شده با نظرشون ثبت بشن.
برای درج input در همان حلقه کنار هرکدام یکی قرار دهید و یک کلید
بعد با Ajax میتونید رویداد onclick رو کنترل کنید و اطلاعات را ثبت کنید
سلام بسیار ممنون
من از یک لیست استفاده کردم و مقدار input ها رو در لیست با id ذخیره کردم تا اینجای کار مشکلی نیس و لیست من تشکیل میشه.ولی وقتی در اکشن AddFood میخام ازش استفاده کنم خطا میده که این لیست من خالی هست و مقداری در اون نیس.ممنون میشم راهنماییم کنید که چیکار کنم؟
public class AddFoodViewModel { public List<System.Web.Mvc.SelectListItem> List { get; set; } public List<System.Web.Mvc.SelectListItem> ListAmount { get; set; } public Foods.Models.DomainModels.Food Food { get; set; } }
اکشنها:
public ActionResult AddAmount(int Id,string Amount) { var model = new AddFoodViewModel(); List<System.Web.Mvc.SelectListItem> items = new List<System.Web.Mvc.SelectListItem>(); items.Add(new System.Web.Mvc.SelectListItem { Text = Amount.ToString(), Value = Id.ToString(), }); model.ListAmount = items; return View(model); }
اکشن AddFood
public ActionResult AddFood(AddFoodViewModel model) { List<System.Web.Mvc.SelectListItem> items = new List<System.Web.Mvc.SelectListItem>(); List<System.Web.Mvc.SelectListItem> itemamount = new List<System.Web.Mvc.SelectListItem>(); items = model.List; itemamount = model.ListAmount; foreach (var item in items) { if (item.Selected) { int idstuf = Convert.ToInt32(item.Value); foreach (var item2 in itemamount) { if (item2.Value == item.Value) { string amount = item2.Text.ToString(); } } int idfood=model.Food.Id; db.AddFoodStuff(idstuf, idfood); } } } return MessageBox.Show("غذا با موفقیت ثبت شد", MessageType.Success); }
ویو:
@for (int i = 0; i < Model.List.Count(); i++) { <div class="col-md-2 marginbot20 "> @Html.CheckBoxFor(m => m.List[i].Selected) @Html.DisplayFor(m => m.List[i].Text) @Html.HiddenFor(m => m.List[i].Value) @Html.HiddenFor(m => m.List[i].Text) <input class="txtamount" placeholder="مقدار" type="text" value="" name="amount" id=@i++> </div> } $(".txtamount").change(function () { var amount = $(this).val(); var id = $(this).attr("id"); $.ajax({ url: "/Admin/AddAmount", data: { Id: id, Amount: amount }, type: "Post", dataType: "Json", }); });
برگرداندن لیست به اکسن به این صورت نیست دوست من
سرچ کنید Send Lest To Action MVC و نمونه ها رو بررسی کنید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)