gpt4 book ai didi

c# - 使用自定义 View 基础在 Razor View 中调用异步函数

转载 作者:行者123 更新时间:2023-11-30 18:27:03 25 4
gpt4 key购买 nike

在我的 MVC5 应用程序中,如果用户没有权限,某些 View 组件不会在 RAZOR 中呈现。

使用与我的应用程序的其余部分完全异步的存储库模式获取权限。

我已经实现了具有以下方法的 IPermission 服务

public interface IPermissionService 
{
Task<bool> IsUserAllowed(string moduleName, string action);

Task<bool> IsUserAdmin();
}

现在为了能够在我的 View 中使用此服务,我编写了一个继承自 WebViewPage 的自定义 View Base,如下所示:

public abstract class ViewBase<T> : WebViewPage<T> where T : class
{
public IPermissionService Permissions;

public override void InitHelpers()
{
base.InitHelpers();
Permissions= DependencyResolver.Current.GetService<IPermissionService>();
}

public override void Execute()
{

}
}

我无法从我的 View 中使用这些异步函数,因为 await 在那里不起作用。我不想创建数据存储库的单独非异步实现。此外,我觉得通过执行类似 Task.Result() 的操作来调用异步函数而不等待也不是一个好主意 call async method without await #2

有更好的方法吗?

最佳答案

您可以尝试将这些资源的加载与 View 的加载分离。

您的 View 本身应该加载所有用户都有权访问的所有项目。

当 View 在客户端呈现时,将异步 ajax 回调发送回服务器上的 Action,它将评估用户有权查看的内容,并将返回适当的数据/模型以供客户端加载。

这样您就不必担心在 View 中运行异步服务器代码,并且仍然可以完全控制用户可以看到的内容(这也是异步的)

关于c# - 使用自定义 View 基础在 Razor View 中调用异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27483564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com