【发布时间】:2021-05-31 08:42:33
【问题描述】:
对于 Asp.net mvc 核心应用程序: 在我的一个 dbcontext 表中,我有一些带有 HelpInfo 的记录(id 作为主键,字符串用于 helpInfo),我想在我的 razor 视图中用作 html 标题属性,例如:
<div title='@I(12)'></div>
其中 12 是 HelpInfo 记录的示例 ID,@I 应该是获取相应 helpInfo 字符串的全局可访问类方法。
我尝试实施 King Kings 方法,例如:
自定义视图:
public abstract class CustomView<TModel> : RazorPage<TModel>
{
protected IInfo Info => Context.RequestServices.GetRequiredService<IInfo>();
public Task<string> I(int code)
{
return Info.GetAsync(code);
}
}
界面:
public interface IInfo
{
Task<string> GetAsync(int code);
}
服务:
public class Info : IInfo
{
private readonly ApplicationDbContext context;
public Info(ApplicationDbContext context)
{
this.context = context;
}
public async Task<string> GetAsync(int code)
{
var myRecord = await context.MyRecords.FindAsync(code);
if (myRecord != null)
{
return myRecord.Info;
}
return null;
}
}
在 _ViewImports.cshtml 我添加了@inherits CustomView<TModel>
在我使用<div title='@(await I(12))'>Test</div>的视图中
当我加载视图时,我得到了
No service for type '...Models.IInfo' has been registered
任何帮助解决问题的人都将不胜感激。
【问题讨论】:
标签: c# html asp.net-mvc asp.net-core razor