Arunachalam Muthukumar Ответов: 0

Элемент модели, передаваемый в словарь, имеет тип "viewmodela", но для этого словаря требуется элемент модели типа "viewmodelb".


Привет,

Ниже приведен мой сценарий.

Я работаю в проекте mvc 5. В этом проекте у нас есть одинаковые имена файлов в двух разных местах (для двух разных функций).

WebProject\Controllers\OrdersTrackingController. cs-это тот, который использует ViewModelA
Вид\Веб-Проект\OrdersTracking\ShowDetail.ascx вносятся

Районы\Веб-Проект\PatientChart\Контроллеры\OrdersTrackingController.в CS - это один через ViewModelB
Районы\Веб-Проект\Вид\PatientChart\OrdersTracking\ShowDetail.ascx вносятся

В методе ShowDetail () каждый контроллер возвращает частичное представление с соответствующей моделью.

Этот метод будет вызван при нажатии кнопки ShowDetail. Это тоже прекрасно работает.

Иногда на производственном сервере мы получаем следующую проблему,

"The model item passed into the dictionary is of type 'WebProject.Areas.PatientChart.Models.ViewModelA', but this dictionary requires a model item of type 'WebProject.Models.ViewModelB'."


Вышеприведенная проблема возникает не всегда. Мы не можем воспроизвести этот вопрос на местном языке. Эта проблема иногда возникает на рабочем сервере.

Любая идея, почему это попытка визуализировать другой вид (другую модель).


Ниже приведен пример кода:

In WebProject\Areas\PatientChart\Controllers\OrdersTrackingController.cs,

public ActionResult OrderDetails(int id)
{
	ViewModelB model = new ViewModelB();            
	
	// Here we have logic to fill the view model
	
	return PartialView(model);
}

In WebProject\Areas\PatientChart\Views\OrdersTracking\ShowDetail.ascx,

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Panther.Web.Areas.PatientChart.Models.ViewModelB>" %>
<div>
<!-- here we have display logic -->
</div>


In WebProject\Controllers\OrdersTrackingController.cs, 

public ActionResult OrderDetails(int id)
{
	ViewModelA model = new ViewModelA();
	
	// Here we have logic to fill the view model
	
	return PartialView(model);
}

In WebProject\Views\OrdersTracking\ShowDetail.ascx,

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ViewModelA>" %>
<div>
<!-- here we have display logic -->
</div>


Что я уже пробовал:

Мы можем исправить эту проблему, указав фактическое местоположение в операторе return.

John C Rayan

Мы можем помочь вам, если вы покажете нам код как из контроллера, так и из представлений.

Arunachalam Muthukumar

Я обновил образец кода. Проблема возникает не всегда. Просто я пытаюсь найти истинную первопричину.

F-ES Sitecore

Найдите в коде любое место, которое возвращает это представление или использует ViewModelA, так как где-то должно быть какое-то условие, при котором эта модель передается этому представлению.

Arunachalam Muthukumar

Хорошо. Я буду искать.

0 Ответов