本文整理汇总了C#中HtmlHelper.RenderAction方法的典型用法代码示例。如果您正苦于以下问题:C# HtmlHelper.RenderAction方法的具体用法?C# HtmlHelper.RenderAction怎么用?C# HtmlHelper.RenderAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HtmlHelper
的用法示例。
在下文中一共展示了HtmlHelper.RenderAction方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RenderActionToString
public static string RenderActionToString(this HtmlHelper helper, HttpRequest request, string controller, string action)
{
//Create memory writer
var sb = new StringBuilder();
var memWriter = new StringWriter(sb);
//Create fake http context to render the view
var fakeResponse = new HttpResponse(memWriter);
var fakeContext = new HttpContext(request, fakeResponse);
var fakeControllerContext = new ControllerContext(
new HttpContextWrapper(fakeContext),
helper.ViewContext.RouteData,
helper.ViewContext.Controller);
var oldContext = HttpContext.Current;
HttpContext.Current = fakeContext;
//Use HtmlHelper to render partial view to fake context
var html = new HtmlHelper(new ViewContext(fakeControllerContext,
new FakeView(), new ViewDataDictionary(), new TempDataDictionary(), memWriter),
new ViewPage());
html.RenderAction(action, controller);
//Restore context
HttpContext.Current = oldContext;
//Flush memory and return output
memWriter.Flush();
return sb.ToString();
}
示例2: RenderTemplate
public void RenderTemplate(ContentItem item, HtmlHelper helper)
{
RouteValueDictionary values = GetRouteValues(helper, item);
if (values == null)
return;
var currentPath = helper.ViewContext.RouteData.CurrentPath();
try
{
try
{
var newPath = currentPath.Clone(currentPath.CurrentPage, item);
helper.ViewContext.RouteData.ApplyCurrentPath(newPath);
helper.RenderAction("Index", values);
}
finally
{
helper.ViewContext.RouteData.ApplyCurrentPath(currentPath);
}
}
catch (Exception ex)
{
Logger.Error("RenderTemplate " + currentPath, ex);
throw;
}
}
示例3: Replace
public string Replace(HttpContextBase httpContext, ControllerContext controllerContext, string input)
{
Stopwatch sw = Stopwatch.StartNew();
//Use HtmlHelper to render partial view to fake context
var html = new HtmlHelper(new ViewContext(controllerContext,
new FakeView(), new ViewDataDictionary(), new TempDataDictionary(), new StringWriter()), new ViewPage());
foreach (var m in PartialAction.Matches(input).Cast<Match>())
{
string action = m.Groups["action"].Value;
string controller = m.Groups["controller"].Value;
object routeValues = null;
if (m.Groups["area"].Success)
{
string area = m.Groups["area"].Value;
if(!string.IsNullOrEmpty(area))
{
routeValues = new {area};
}
}
using (var ms = new MemoryStream())
using (var tw = new StreamWriter(ms))
{
html.ViewContext.Writer = tw;
Stopwatch actionSw = Stopwatch.StartNew();
html.RenderAction(action, controller, routeValues);
actionSw.Stop();
Trace.Write(string.Format("Donut hole: {0} took {1:F2} ms.", action, actionSw.Elapsed.TotalMilliseconds));
tw.Flush();
ms.Seek(0, SeekOrigin.Begin);
using (var sr = new StreamReader(ms))
{
input = input.Replace(m.Value, sr.ReadToEnd());
}
}
}
sw.Stop();
Trace.Write(string.Format("Fill Donut Hole took {0:F2} ms.", sw.Elapsed.TotalMilliseconds));
return input;
}
示例4: RenderTemplate
public void RenderTemplate(ContentItem item, HtmlHelper helper)
{
Type itemType = item.GetContentType();
string controllerName = controllerMapper.GetControllerName(itemType);
if(string.IsNullOrEmpty(controllerName))
{
Trace.TraceWarning("Found no controller for type " + itemType);
return;
}
RouteValueDictionary values = GetRouteValues(helper, item, controllerName);
helper.RenderAction("Index", values);
}
示例5: RenderTemplate
public void RenderTemplate(ContentItem item, HtmlHelper helper)
{
Type itemType = item.GetContentType();
string controllerName = controllerMapper.GetControllerName(itemType);
if(string.IsNullOrEmpty(controllerName))
{
Trace.TraceWarning("Found no controller for type " + itemType);
return;
}
RouteValueDictionary values = GetRouteValues(helper, item, controllerName);
try
{
helper.ViewContext.RouteData.DataTokens[ItemOverrideKey] = item;
helper.RenderAction("Index", values);
}
finally
{
if (helper.ViewContext.RouteData.DataTokens.ContainsKey(ItemOverrideKey))
helper.ViewContext.RouteData.DataTokens.Remove(ItemOverrideKey);
}
}
示例6: RenderTabPane
public override void RenderTabPane(HtmlHelper<User> html, User user)
{
html.RenderAction("List", "UserRewardPoints", new { user });
}
示例7: RenderTabPane
public override void RenderTabPane(HtmlHelper<Webpage> html, Webpage webpage)
{
html.RenderAction("Show", "WebpageComments", new { webpage });
}
示例8: RenderTabPane
public override void RenderTabPane(HtmlHelper<User> html, User user)
{
html.RenderAction("Show", "AuthorInfo", new {user});
}
示例9: RenderTabPane
public override void RenderTabPane(HtmlHelper<Webpage> html, Webpage webpage)
{
html.RenderAction("Show", "Versions", new {document = webpage});
}
示例10: RenderTemplate
public void RenderTemplate(ContentItem item, HtmlHelper helper, TextWriter writer = null)
{
RouteValueDictionary values = GetRouteValues(helper, item);
if (values == null)
return;
var currentPath = helper.ViewContext.RouteData.CurrentPath();
try
{
var newPath = currentPath.Clone(currentPath.CurrentPage, item);
helper.ViewContext.RouteData.ApplyCurrentPath(newPath);
if (writer == null)
helper.RenderAction("Index", values);
else
writer.Write(helper.Action("Index", values));
}
finally
{
helper.ViewContext.RouteData.ApplyCurrentPath(currentPath);
}
}