您的位置:首页 > 其它

报错:具有键"..."的ViewData项属于类型"...",但它必须属于类型"IEnumerable<SelectListItem>"

2014-04-22 15:02 543 查看
报错:具有键"..."的ViewData项属于类型"...",但它必须属于类型"IEnumerable<SelectListItem>"

 

□ 背景分析

MVC控制器中有2个方法,一个是用来显示添加视图,另一个是用来接收添加数据。

public ActionResult Add()


[code]{


ViewData["o"] = 类型为List<SelectListItem>的集合实例;


return View();


}


 

[HttpPost]


public ActionResult Add(SomeViewModel model)


{


if(ModelState.IsValid)


{


//TO DO


}


else


{


return View(model);


}


}

[/code]

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

 

□ 解决方法

控制器方法Add()在接收视图传来的view model,在验证失败的情况下,返回到显示添加的视图,这时,同样需要把类型为List<SelectListItem>的集合实例传递到前台视图。正确的写法是:

[HttpPost]


[code]public ActionResult Add(SomeViewModel model)


{


if(ModelState.IsValid)


{


//TO DO


}


else


{


    ViewData["o"] = 类型为List<SelectListItem>的集合实例;


return View(model);


}


}

[/code]

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐