在单独的程序集中使用 View 组件进行 ASP NET 5 本地化

2024-02-06

我有一个“类库”项目,上面有一些“ViewComponents”,我已经让它们在我的“MVC 6 Web 应用程序”上工作(感谢这个问题 https://stackoverflow.com/questions/34236850/asp-net-mvc-6-view-components-in-a-separate-assembly)但现在我正在尝试将语言资源(本地化)添加到我的“ViewComponents”中。关于如何做到这一点有什么建议吗?

我已经将必要的行添加到“MVC 6 Web 应用程序”的启动文件中:

启动.cs

[...]
services.AddMvc()
        .AddViewLocalization(options => options.ResourcesPath = "Resources");
[...]
app.UseRequestLocalization(new RequestCulture(new CultureInfo("es-MX")));

我还添加了对“类库”视图的依赖项:

视图/共享/组件/标题/foo.cshtml

@using Microsoft.AspNet.Mvc.Localization
@inject IViewLocalizer LocString
<h1>@LocString["HelloWorld"]</h1>

并在我的“类库”项目中创建了资源文件夹和文件:

-Resources
   -Views.Shared.Components.Header.foo.cshtml.resx

但我得到的只是键的名称“HelloWorld”而不是本地化资源“Hola mundo”

简而言之,我错过了什么吗?有谁知道如何在“mvc 6 Web应用程序”上的“类库”中使用“视图组件”中的本地化资源

Notes:

  • 我正在使用 mvc 6 RC1

  • 来自非 ViewComponents 的其他视图的资源工作正常。

谢谢你!


问题是我不知道编译器在从视图组件访问时正在查找的资源文件的名称,因此以下这个线程 https://github.com/aspnet/Localization/issues/153我直接使用了 IStringLocalizerFactory:

public class HeaderViewComponent : ViewComponent
{
  private string viewName;
  private readonly IStringLocalizer _localizer;

  public HeaderViewComponent(IStringLocalizerFactory localizedFactory)
  {
     _localizer = localizedFactory.Create("name.of.your.resource.file", "Namespace");
  } 
  public IViewComponentResult Invoke()
  {
    [...]
    ViewBag.StringLocalizer = _localizer;
    return View("name", model);
  }
}

“Create”的第二个参数是你的“类库”的命名空间

然后在我的 Invoke 函数中,我将 _localizer 添加到 ViewBag 中以在视图上使用它(因为我还没有找到使用刚刚创建的 localizedFactory 注入 IViewLocalizer 的方法)。

我还将其添加到我的“类库”project.json 中:

"resource": [ "Views/**", "Resources/**" ]

希望它可以帮助其他人寻找使用类库资源的解决方案

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在单独的程序集中使用 View 组件进行 ASP NET 5 本地化 的相关文章

  • 是否需要销毁运算符删除的形式才能真正销毁对象?

    C 20 添加了破坏形式operator delete区别于std destroying delete t范围 它导致delete表达式在调用之前不再销毁对象operator delete 目的是在显式调用对象的析构函数和释放内存之前 允许
  • 捕获 .aspx 和 .ascx 页面中的异常

    问题说明了一切 请看以下示例代码 ul li li ul
  • 为什么 C 程序使用 Scanf 给出奇怪的输出?

    我目前正在学习 C 编程 并且遇到了这个奇怪的输出 Program will try functionalities of the scanf function include
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • 包恢复失败。回滚包更改 - Serilog.AspNetCore

    我有一个 asp net Core 项目 我正在尝试向其中添加一个记录器 我选择了我在其他项目中使用过的 SeriLog 但是当我尝试添加 Serilog AspNetCore 我得到的软件包版本 2 0 0 包恢复失败 回滚 后端 的包更
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • 测量进程消耗的 CPU 时钟

    我用 C 语言编写了一个程序 它是作为研究结果创建的程序 我想计算程序消耗的确切 CPU 周期 精确的循环次数 知道我怎样才能找到它吗 The valgrind tool cachegrind valgrind tool cachegrin
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • Unity3D - 将 UI 对象移动到屏幕中心,同时保持其父子关系

    我有一个 UI 图像 它的父级是 RectTransform 容器 该容器的父级是 UI 面板 而 UI 面板的父级是 Canvas 我希望能够将此 UI 图像移动到屏幕中心 即画布 同时保留父级层次结构 我的目标是将 UI 图像从中心动画
  • 调用 .ToArray() 时出现 ArgumentException

    我有一个经常被清除的列表 代码完全是这样的 VisitorAgent toPersist List
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 任何人都可以清楚地告诉如何在不使用像 这样的预定义函数的情况下找到带有小数值或小数值的指数吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 例如 2 0 5 1 414 所以想要 我是 c 的新手 所以请解释简单的逻辑 如果不是复杂的逻辑也足够了 在数学中 从整数取幂到实数

随机推荐