با سلام
در نظر دارم با حلقه foreach یک dropdwonlist درست کنم اما خطای زیز نمایش داده می شود
The type arguments for method 'System.Web.Mvc.Html.SelectExtensions.DropDownListFor<TModel,TProperty>(System.Web.Mvc.HtmlHelper<TModel>, System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>, System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>, string)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
کدهای که نوشته ام به صورت زیر است
@model IEnumerable<ClassLibrary1.dt.city> @foreach (var item in Model.Where(i=>i.Parentid=="0").ToList()) { @Html.DropDownListFor(item.Id, new SelectList(Model, "Id", "Name"), "------------------") } namespace WebApplication7.ViewModel { public class ali { public IEnumerable<city> cit { get; set; } } } public ActionResult Index() { adsingwebsiteContainer t = new adsingwebsiteContainer(); ali bu = new ali(); bu.cit = t.cities.ToList(); return View(bu); }
علت خطا چیست چگونه خطا را برطرف کنم
مدلی که به این ویو پاس داده شده ، خودش نوعی لیست است ، نیازی نیست در foreach وقتی شرطی را قراردادید دوباره از .ToList() استفاده کنید.
با کدی هم که برای ایجاد دراپ دان نوشتید شما در واقع به تعداد عناصر درون حلقه دراپ دان دارید ایجاد می کنید.برای ایجاد دراپ دان نیازی به foreach ندارید.
وقتی از helper برای ایجاد دراپ دان استفاده می کنید باید به شیوه زیر عمل کنید :
<div class="form-group"> @Html.LabelFor(m => m.State) @Html.DropDownListFor(m => m.State, // 1. Store selected value in Model.State; // when page is rendered after postback, // take selected value from Model.State. // 2. Take list of values from Model.States Model.States, // 3. Text for the first 'default' option "- Please select a state -", //4. A class name to assign to <select> tag new { @class = "form-control" }) </div>
بازهم اگر سوالی بود مطرح کنید در همین تاپیک
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)