Estoy representando Parciales/Modelos con el siguiente método para modelar los correos electrónicos que se envían.ControllerContext y ViewData Outside Scope of Controller - MVC3 C#
Estoy usando el siguiente código para convertir el parcial y el modelo en una cadena html que puedo pasar a mi código de envío de correo electrónico.
public class BaseController : Controller
{
public string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
throw new ArgumentException("No View Path Provided.");
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
}
Actualmente, este vive en el BaseController, me gustaría moverlo hacia un método de ayuda para que pueda mover el modelo de correo electrónico a cabo la construcción/envío de la controladora también.
El problema es que no tengo acceso a ViewData/TempData/ControllerContext
puedo nuevo un ControllerContext pero no sé qué hacer con ViewData/TempData.
Esta es la forma en que yo usaría lo que tengo en el controlador actualmente:
//Do Stuff in Controller
var html = RenderPartialViewToString("~/Views/Mail/_ForgotPassword.cshtml", new MailModel { Username = "Skrillex", SomethingElse = "foo" });
//Send the Email
¿Está utilizando tempdata/viewdata en la representación de la vista ? Si no, ¿por qué no pasar los vacíos? – Aliostad
Estoy usando ViewData para establecer el modelo. – Jason
Entonces, ¿por qué no es una vista fuertemente tipada? ¿Tuviste que usar vista suelta? – Aliostad