我有一個返回partialview一個動作,我想呈現的動作結果字符串,我試過很多例子表明對他人線程關於這個問題,但都具有相同的行爲,執行去查看,但不是行動,這可能嗎?渲染動作,以字符串
實施例: 1)作用 - 局部視圖來渲染到串
public PartialViewResult Email(string Subject, string Body)
{
ViewBag.Subject = Subject;
ViewBag.Body = Body;
ViewBag.ExtraData = Session["ExtraData"];
return PartialView();
}
2)局部視圖
@{
Layout = null;
string Subject = (string)@ViewBag.Subject
string Body = (string)@ViewBag.Body
}
<html>
<head>
<title>@Subject</title>
</head>
<body style="margin:0px">
@Body
</body>
3)控制器類獲得串動作結果
var emailHTML = RenderViewToString(ControllerContext, "Email", new string[] { subject, msg });
4)從stackoverflow線程的幫手方法
public static string RenderViewToString(ControllerContext context, string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = context.RouteData.GetRequiredString("action");
ViewDataDictionary viewData = new ViewDataDictionary(model);
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(context, viewName);
ViewContext viewContext = new ViewContext(context, viewResult.View, viewData, new TempDataDictionary(), sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
如果我調試代碼,它直接進入沒有ViewBag數據的View,並且不執行Email Action方法。
任何想法?
它沒有幫助遺憾,同樣的問題的代碼 – Santiago