我发现了一些文章如何在ASP.NET中将视图返回到字符串,但无法转换为能够使用.NET Core运行它
public static string RenderViewToString(this Controller controller, string viewName, object model)
{
var context = controller.ControllerContext;
if (string.IsNullOrEmpty(viewName))
viewName = context.RouteData.GetRequiredString("action");
var viewData = new ViewDataDictionary(model);
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(context, viewName);
var viewContext = new ViewContext(context, viewResult.View, viewData, new TempDataDictionary(), sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
假设能够使用以下控制器从控制器调用:
var strView = this.RenderViewToString("YourViewName", yourModel);
Run Code Online (Sandbox Code Playgroud)
当我尝试将上述内容运行到.NET Core时,我遇到了很多编译错误.
我试图将其转换为使用.NET Core,但失败了,任何人都可以帮助提及所需的using ..和所需"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.1.0",
...
},的project.json.
其他一些示例代码在这里, …
我创建了一个新的MVC6项目并构建了一个新站点.目标是获取视图的渲染结果.我找到了以下代码,但我无法让它工作,因为我找不到ControllerContext和ViewEngines.
这是我想要重写的代码:
protected string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = ControllerContext.RouteData.GetRequiredString("action");
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();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些现有代码从MVC5迁移到MVC6,我对这个特定代码有困难:
Engine.Razor.RunCompile(File.ReadAllText(emailTemplatePath), "emailTemplateKey", typeof (EmailViewModel), emailViewModel);
Run Code Online (Sandbox Code Playgroud)
我收到以下运行时错误:
MissingMethodException: Method not found: "Void Microsoft.AspNet.Razor.CodeGenerators.GeneratedClassContext.set_ResolveUrlMethodName(System.String)". in RazorEngine.Compilation.CompilerServiceBase.CreateHost(Type templateType, Type modelType, String className)
Run Code Online (Sandbox Code Playgroud)
我在MVC5中使用的原始代码是从这里获取的.如果无法将上述代码转换为使用MVC6,那么另一种优雅的电子邮件模板方式是什么?
在ASP.NET MVC中,我可以像这样解析Razor脚本:
string template = "It is @DateTime.Now.ToString()";
string result = Razor.Parse(template);
Run Code Online (Sandbox Code Playgroud)
但是核心中不存在这种静态.
我也读过这篇文章,但在我看来,视图代码是一个字符串,所以我不能使用find或者get查看方法ICompositeViewEngine.
关于如何在核心中解析视图字符串的任何建议?
我正在尝试将asp.net mvc与angular 2应用程序集成.我知道这并不理想,但我被要求将一些现有的Mvc功能(想想大遗留应用程序)整合到一个全新的Angular 2水疗中心.
我想要做的是有一个cshtml视图,其中包含角度组件,以及纯mvc的东西......
<side-bar></side-bar>
<action-bar></action-bar>
@{
Html.RenderPartial("_SuperLegacyPartialView");
}
Run Code Online (Sandbox Code Playgroud)
我很难找到任何方法来做到这一点.这篇博文看起来很有前途 - http://www.centare.com/tutorial-angular2-mvc-6-asp-net-5/.它使用了一个指向由Mvc和AsyncRoute呈现的路径的templateUrl值,但是在Angular 2中它们都不再有效.这篇文章看起来很有前途 - http://gbataille.github.io/2016/02/ 16/Angular2-Webpack-AsyncRoute.html,但它也使用AsyncRoute,不推荐使用.
这在Angular 1中非常容易.我们曾经手动将角度引导到Razor视图中,或者将局部视图渲染为组件/指令的templateUrl.在使用Webpack的最新Angular 2中执行此操作的最佳方法是什么?
我需要将视图渲染为字符串(以电子邮件形式发送)。我正在使用这个实现。
我想对其进行单元测试,而不需要完整的 ASP.NET Core 环境。所以我必须创建一个IRazorViewEngine.
默认实现是RazorViewEngine. 我有一个大型构造函数,因为每个参数都需要创建,并且每个参数都有一个大型构造函数,等等(我无法模拟它,我需要一个实时实例。)
当然有更简单的方法来获取实例吗?
(在 Core 之前,我可以使用ViewEngines.Engines。也许 Core 有类似的东西?)
asp.net-core ×5
asp.net-mvc ×4
c# ×4
razor ×3
razorengine ×2
.net-core ×1
angular ×1
asp.net ×1
nunit ×1
templates ×1
webpack ×1