相关疑难解决方法(0)

在.NET Core中将视图返回为字符串

我发现了一些文章如何在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.

其他一些示例代码在这里, …

c# asp.net razor .net-core asp.net-core

53
推荐指数
7
解决办法
3万
查看次数

MVC 6 Controller中的ControllerContext和ViewEngines属性在哪里?

我创建了一个新的MVC6项目并构建了一个新站点.目标是获取视图的渲染结果.我找到了以下代码,但我无法让它工作,因为我找不到ControllerContextViewEngines.

这是我想要重写的代码:

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)

c# asp.net-mvc asp.net-core-mvc asp.net-core

17
推荐指数
2
解决办法
1万
查看次数

Razor Engine无法在ASP.net 5 MVC 6中运行

我正在尝试将一些现有代码从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 templates razor razorengine asp.net-core

9
推荐指数
1
解决办法
1796
查看次数

ASP.NET核心中的Parse Razor字符串

在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.

关于如何在核心中解析视图字符串的任何建议?

c# asp.net-mvc razor razorengine asp.net-core

8
推荐指数
1
解决办法
4184
查看次数

如何将asp.net mvc视图渲染为angular 2?

我正在尝试将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-mvc asp.net-mvc-partialview webpack angular

7
推荐指数
1
解决办法
7667
查看次数

依赖于 IRazorViewEngine 真实实例的单元测试

我需要将视图渲染为字符串(以电子邮件形式发送)。我正在使用这个实现

我想对其进行单元测试,而不需要完整的 ASP.NET Core 环境。所以我必须创建一个IRazorViewEngine.

默认实现是RazorViewEngine. 我有一个大型构造函数,因为每个参数都需要创建,并且每个参数都有一个大型构造函数,等等(我无法模拟它,我需要一个实时实例。)

当然有更简单的方法来获取实例吗?

(在 Core 之前,我可以使用ViewEngines.Engines。也许 Core 有类似的东西?)

c# nunit asp.net-core-mvc asp.net-core

5
推荐指数
1
解决办法
1329
查看次数