Использование MVC 5. Я пытаюсь получить любое из нескольких представлений, которые я вставлю через ajax в Div.Я использую класс, который я нашел в SO, который ограничивает меня контроллером, из которого я вызываю метод.
Мне нужно предоставить любой метод, который я хочу, этому методу.Есть ли способ, которым это возможно?
1004 * Это то, что у меня есть.
public static string RenderView(this Controller controller, string viewName, object model)
{
return RenderView(controller, viewName, new ViewDataDictionary(model));
}
public static string RenderView<TModel>(this Controller controller, string viewName, TModel model, bool partial = false)
{
var controllerContext = controller.ControllerContext;
controllerContext.Controller.ViewData.Model = model;
//viewName = "List";
//var viewResult = partial ? ViewEngines.Engines.FindPartialView(controllerContext, viewName) : ViewEngines.Engines.FindView(controllerContext, viewName, null);
StringWriter stringWriter;
using (stringWriter = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindView(controllerContext, viewName, null);
var viewContext = new ViewContext(controllerContext, viewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, stringWriter);
viewResult.View.Render(viewContext, stringWriter);
viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View);
return stringWriter.GetStringBuilder().ToString();
}
}
Из моего контроллера UserAndPersonController
я вызываю этот метод, который затем пытается получить все необходимое представлениечтобы вернуться к вызову ajax и поместить его в определенный Div.
public string GetView(string viewName, string request)
{
Object obj = new Object();
// Get the various Designations a Person can have
if (request.Contains("User"))
{
obj = new { PersonUserModel = "Catalyst.Mvc.Models.PersonUserModel" };
}
else if (request.Contains("Driver"))
{
obj = new { DriverViewModel = "Models.DriverViewModel" };
}
else if (request.Contains("Debtor"))
{
obj = new { DebtorViewModel = "Models.DebtorViewModel" };
}
// ?? How do I get any Controller context , each must match the respective models
string viewHTML = this.RenderView( "List", obj);
return viewHTML;
}
Я также получаю сообщение об ошибке из viewResult.view.render (viewContext, stringWriter);строка, независимо от того, какую модель я пытаюсь передать.
System.InvalidOperationException: 'Элемент модели, переданный в словарь, имеет тип' <> f__AnonymousType14`1 [System.String] ', но этоДля словаря требуется элемент модели типа 'Catalyst.Mvc.Models.PersonUserModel'. '