c# - "There is no ViewData item of type 'IEnumerable<SelectListItem>'" error with custom model and list -
i have dropdownlist in view:
@html.dropdownlist("sale.typetransaction", viewbag.typetransaction selectlist, new { @class = "form-control" }) as can see, name of dropdownlist sale.typetransaction because sale it's model inside custom model:
public class officesale { public officesale() { saleproductrelations = new list<saleproductrelation>(); sale = new sale(); } public sale sale { get; set; } public list<saleproductrelation> saleproductrelations { get; set; } } sale has property typetransaction, string. in controller fill selectlist follows:
public actionresult newsale() { var list = new list<selectlistitem>(); list.add(new selectlistitem { text = "cash", value = "cash" }); list.add(new selectlistitem { text = "credit", value = "credit" }); list.add(new selectlistitem { text = "promotion", value = "promotion" }); viewbag.typetransaction = list; return view(new officesale()); } i know if viewbag has same name of property dropdownlist filled. cannot write viewbag.sale.typetransaction. have idea solve this? in advance.
ok tried following @stephenmuecke suggested , worked:
public actionresult newsale() { var list = new list<string>(); list.add("cash"); list.add("credit"); list.add("promotion"); viewbag.typetransaction = new selectlist(list); return view(new officesale()); } @html.dropdownlist("sale.typetransaction", viewbag.typetransaction selectlist, new { @class = "form-control" })
your problem in controller assign viewbag.typetransaction typeof ienumerable<selectlistitem> in view try , cast typeof selectlist results in viewbag.typetransaction being null.
selectlist ienumerable<selectlistitem> (selectlist derives multiselectlist derives ienumerable<selectlistitem>) ienumerable<selectlistitem> is not selectlist
there 2 options solve this. first, in view, cast viewbag property correct type in html helper
@html.dropdownlist("sale.typetransaction", viewbag.typetransaction ienumerable<selectlistitem>, new { @class = "form-control" }) or alternatively, in view, create selectlist, example
viewbag.typetransaction = new selectlist(new list<string>() { "cash", "credit", "promotion" });
Comments
Post a Comment