我有UserControl以及特定視圖的模型。 Usercontrol工作正常,同時我嘗試在模型的同一視圖中包含單選按鈕。我收到錯誤:「傳入字典的模型項目類型爲」System.Data.DataTable「,但此字典需要」MyModelName「類型的模型項目。如何在MVC2視圖中包含UserControl和Model?
所以你能幫助任何人。
感謝, 磨憨
我有UserControl以及特定視圖的模型。 Usercontrol工作正常,同時我嘗試在模型的同一視圖中包含單選按鈕。我收到錯誤:「傳入字典的模型項目類型爲」System.Data.DataTable「,但此字典需要」MyModelName「類型的模型項目。如何在MVC2視圖中包含UserControl和Model?
所以你能幫助任何人。
感謝, 磨憨
異常消息是非常的描述和說明了一切。您的視圖接受不同的模型,並且您將不同的模型傳遞給控制器中的此視圖。 看兩個地方
<%@ 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
}
編輯您可以使用視圖模型,它可以包含由視圖所需要的所有值
public class MYViewModel
{
System.Data.DataTable MyTable{get;set;}
Registration Myregistration{get;set;}
}
現在在控制器中,您可以填充您的視圖模型,如
public 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%>
我明白,但我需要兩個,現在我傳遞像這樣的返回視圖(CMenuBulider.LoadMenu())/ /這是用戶控件。所以現在我需要用戶控制以及模型。我怎麼能夠? – 2011-03-18 05:18:34
@Mohanraj如果你可以粘貼你的控制器並查看代碼,我們可能會提供幫助。我不知道你打算從控制器傳遞給用戶控件的是什麼 – 2011-03-18 05:27:23
<%@ Control Language =「C#」Inherits =「System.Web.Mvc.ViewUserControl
某些代碼訪問它們,請!!! – 2011-03-18 05:00:20
Inherits =「System.Web.Mvc.ViewPage」,並且我已經包含Usercontrol「<%Html.RenderPartial(」〜/ Views/SecondaryMenu.ascx「);%>」,現在我試着裝入readiobutton 「<%= Html.RadioButton(」radio_button「,Model.rdbCutomerType)%>是 <%= Html.RadioButton(」radio_button「,!Model.rdbCutomerType)%>否」 –
2011-03-18 05:09:49
在控制器返回視圖時,你過世了嗎?你必須寫這樣的「返回視圖(modelInstance)」。模型實例的類型爲RegistrationModel。 – Novice 2011-03-18 05:11:48