Как включить UserControl и Model в представление MVC2? - PullRequest
0 голосов
/ 18 марта 2011

У меня есть UserControl, а также модель для конкретного вида. Usercontrol работает должным образом, в то же время я пытаюсь включить радио кнопку на том же представлении с моделью. Я получаю сообщение об ошибке: «Элемент модели, переданный в словарь, имеет тип« System.Data.DataTable », но для этого словаря требуется элемент модели типа« MyModelName »».

Так что вы можете помочь кому-нибудь.

спасибо, Mohan

1 Ответ

0 голосов
/ 18 марта 2011

Сообщение об исключении очень наглядно и говорит обо всем. Ваше представление принимает другую модель, и вы передаете другую модель этому представлению в контроллере. Посмотрите на два места

<%@ 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;}
}

теперь в контроллере вы можете заполнить вашу viewModel как

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%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...