मैं भेजे गए टेम्पलेट ईमेल के लिए नीचे दी गई विधि के साथ पार्टिकल व्यू/मॉडल प्रस्तुत कर रहा हूं।कंट्रोलर कॉन्टेक्स्ट और व्यूडाटा कंट्रोलर के दायरे से बाहर - एमवीसी 3 सी #
मैं आंशिक और मॉडल को एक HTML स्ट्रिंग में परिवर्तित करने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूं जिसे मैं अपने ईमेल भेजने कोड में भेज सकता हूं।
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();
}
}
}
वर्तमान में, यह BaseController में रहता है, मैं एक सहायक विधि में इसे बाहर ले जाने के लिए इतना है कि मैं अपने ईमेल मॉडल इमारत का निर्माण कर/नियंत्रक से बाहर भी भेज रहा है स्थानांतरित कर सकते हैं करना चाहते हैं।
समस्या मैं ViewData/TempData/ControllerContext के लिए उपयोग नहीं है
मैं कर सकते हैं नए ऊपर एक ControllerContext लेकिन मैं ViewData/TempData के बारे में क्या करना है पता नहीं है।
यह मैं कैसे प्रयोग करेंगे क्या मैं नियंत्रक वर्तमान में है:
//Do Stuff in Controller
var html = RenderPartialViewToString("~/Views/Mail/_ForgotPassword.cshtml", new MailModel { Username = "Skrillex", SomethingElse = "foo" });
//Send the Email
आप को देखने के प्रतिपादन में tempdata/ViewData उपयोग कर रहे हैं ? यदि नहीं तो खाली क्यों नहीं गुजर रहे हैं? – Aliostad
मैं मॉडल सेट करने के लिए व्यूडेटा का उपयोग कर रहा हूं। – Jason
तो यह दृढ़ता से टाइप किए गए दृश्य क्यों नहीं है? क्या आपको ढीले दृश्य का उपयोग करना पड़ा? – Aliostad