با سلام ممنون می شم دوستان کمکم کنید از لاین موجود در dropdownlist ارور می ده می گه Object reference not set to an instance of an object ممنون می شم کمکم کنید هر کار کردم نشد TestController ---------------------- [HttpGet] public ActionResult AddReseller() { var blOstan = new OstanRepository(); var model = new MVCInternetShop.ViewModels.Test.AddRepositoryViewModel(); model.Ostans = blOstan.Select().ToList(); return View(model); } [HttpPost] public ActionResult AddReseller(Reseller reseller) { if (ModelState.IsValid) { var blReseller = new ResellerRepository(); if (blReseller.Add(reseller)) ViewBag.Message = "نمایندگی ثبت شد"; else ViewBag.Message = "نمایندگی ثبت نشد"; } else ViewBag.Message = "مقادر ورودی نا معتبر است"; return View(); }
---------------------
view model
--------------------
using MVCInternetShop.Models.DomainModels; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MVCInternetShop.ViewModels.Test { public class AddRepositoryViewModel { public Reseller Reseller { get; set; } public IEnumerable<Ostan> Ostans { get; set; } } }
----------------------------------
AddReseller view
--------------------------------------
@model MVCInternetShop.ViewModels.Test.AddRepositoryViewModel @{ ViewBag.Title = "AddReseller"; } <h2>@ViewBag.Message</h2> @using (Html.BeginForm("AddReseller","Test",FormMethod.Post)) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>Reseller</h4> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Reseller.Name, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Reseller.Name, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Reseller.Name, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Reseller.Address, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Reseller.Address, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Reseller.Address, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Reseller.OstanId, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownListFor(model => model.Reseller.OstanId, new SelectList(Model.Ostans, "Id", "Name"), "استان مورد نظر خود را انتخاب کنید", null) @Html.ValidationMessageFor(model => model.Reseller.OstanId, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Create" class="btn btn-default" /> </div> </div> </div> }
مدل را به شکل زیر تغییر دهید و امتحان کنید
public class AddRepositoryViewModel { public Reseller Reseller { get; set; } public IEnumerable<Ostan> Ostans { get; set; } public AddRepositoryViewModel() { Ostans =new IEnumerable<Ostan>(); } }
تشکر از شما که همیشه پاسخ می دید
ولی جناب مدائنی وقتی این سازنده رو به کلاس viewmodel خودم add می کنم
چون IEnumerable خودش یه اینترفیس هست پس نمی شی ازش آبجکتی ساخت یعنی نمی شه از new براش استفاده کرد
اروری که می ده هم اینه
Cannot create an instance of the abstract class or interface
ممنون می شم راهنمایی بفرمایید
درسته من دقت نکرده بودم
بعد از New از list<> استفاده کنید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)