2011-03-18 41 views
0

我有UserControl以及特定視圖的模型。 Usercontrol工作正常,同時我嘗試在模型的同一視圖中包含單選按鈕。我收到錯誤:「傳入字典的模型項目類型爲」System.Data.DataTable「,但此字典需要」MyModelName「類型的模型項目。如何在MVC2視圖中包含UserControl和Model?

所以你能幫助任何人。

感謝, 磨憨

+3

某些代碼訪問它們,請!!! – 2011-03-18 05:00:20

+1

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

+0

在控制器返回視圖時,你過世了嗎?你必須寫這樣的「返回視圖(modelInstance)」。模型實例的類型爲RegistrationModel。 – Novice 2011-03-18 05:11:48

回答

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 
} 

編輯您可以使用視圖模型,它可以包含由視圖所需要的所有值

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%> 
+0

我明白,但我需要兩個,現在我傳遞像這樣的返回視圖(CMenuBulider.LoadMenu())/ /這是用戶控件。所以現在我需要用戶控制以及模型。我怎麼能夠? – 2011-03-18 05:18:34

+0

@Mohanraj如果你可以粘貼你的控制器並查看代碼,我們可能會提供幫助。我不知道你打算從控制器傳遞給用戶控件的是什麼 – 2011-03-18 05:27:23

+0

<%@ Control Language =「C#」Inherits =「System.Web.Mvc.ViewUserControl 」%> < % int i = 0; foreach(模型中的System.Data.DataRow行。行) { %> <%=row["DisplayText"].ToString()%> }%> 我的型號是: 公共類註冊 { 公共BOOL rdbCutomerType {獲得;組; } } Controller: public ActionResult CustomerView(int id) { 註冊reg = new Registration(); return查看(reg); } – 2011-03-18 05:32:35