با سلام ممنون می شم دوستان کمکم کنید
از لاین موجود در
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<> استفاده کنید
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)