Так что это может звучать немного странно, но, по сути, я пытаюсь сделать представление заранее в контроллере, чтобы передать его свойству в модели. (Это так, чтобы позже я мог передать представленный HTML-код представлению вызову службы, поэтому у меня есть причина.) У меня есть код, который почти выполняет это (адаптировано из этого ответа ), с плохим побочным эффектом возврата вида, который был визуализирован дважды:
public ActionResult Action(object paramater)
{
var model = new MyModel(parameter);
ViewResult view = View("~/... path to view .../View.cshtml", model);
string data;
using (var sw = new StringWriter())
{
view.ExecuteResult(ControllerContext);
var viewContext = new ViewContext(ControllerContext, view.View, ViewData, TempData, sw);
view.View.Render(viewContext, sw);
data = sw.ToString();
}
model.ViewRender = data;
return view;
}
Это успешно помещает копию HTML представления в модель, но само представление отображается дважды (так кажется), поэтому я получаю веб-страницу, которая представляет собой две копии одной и той же вещи, одна поверх другой .
Я пробовал пару разных способов вернуть вид без этого побочного эффекта - сделать новый полностью с return View(model)
, перейдя в другой метод - пока ничего не получалось.