我有UserControl以及特定视图的模型。 Usercontrol正在正常工作,同时我尝试在与模型相同的视图中包含radiobutton。我收到错误:“传入字典的模型项是'System.Data.DataTable'类型,但这个字典需要一个类型为”MyModelName“的模型项。”
所以,请你帮助任何人。
感谢, 莫汉
答案 0 :(得分:0)
异常消息非常具有描述性,并且说明了一切。您的视图接受不同的模型,并且您在控制器中将不同的模型传递给此视图。 看看两个地方
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<AcceptedModel>" %>
并且在你的控制器中你会有像
这样的东西public ActionResult action()
{
SentModel model = new SentModel();
return View(SentModel); //i believe typeof(SentModel) != typeof(AcceptedModel) that is what is causing problem
}
编辑您可以使用可包含视图所需的所有值的viewModel
public class MYViewModel
{
System.Data.DataTable MyTable{get;set;}
Registration Myregistration{get;set;}
}
现在在控制器中,您可以像
一样填充viewModelpublic ActionResult MyActionResult(int id)
{
MyViewModel mdl = new MyViewModel();
mdl.Myregistration = new Registration();
mdl.MyTable = //code to populate table
return View(mdl);
}
在视图中,您应该将其更新为接受MyViewModel类型
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<MyViewModel>" %>
然后您可以使用
在视图中访问它们<%foreach( var row in Model.MyTable){}%>
and <%:Model.MyRegistration.FirstName%>