加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在F#中设置基本成员值

发布时间:2020-12-16 06:31:53 所属栏目:asp.Net 来源:网络整理
导读:我现在正试图在F#中实现我自己的基本视图引擎.基本上我从VirtualPathProviderViewEngine继承. 为此,我需要设置两个视图位置,以便引擎知道查找视图的位置.在我的F#类型中,我从上面继承并尝试设置两个视图位置如下… type FSharpViewEngine() =inherit Virtual
我现在正试图在F#中实现我自己的基本视图引擎.基本上我从VirtualPathProviderViewEngine继承.

为此,我需要设置两个视图位置,以便引擎知道查找视图的位置.在我的F#类型中,我从上面继承并尝试设置两个视图位置如下…

type FSharpViewEngine() =
inherit VirtualPathProviderViewEngine()

let viewLocations = [| "~/Views/{1}/{0}.fshtml"; "~/Views/Shared/{0}.fshtml" |]

member this.ViewLocationFormats = viewLocations
member this.PartialViewLocationFormats = viewLocations

上面的代码省略了VirtualPathProviderViewEngine所需的覆盖.
我运行该项目,我收到一条错误消息要说

The property ‘ViewLocationFormats’ cannot be null or empty.

我假设这意味着我没有在上面正确设置两个基本成员.我只是错误地指定上述内容,还是您怀疑我做错了什么?

作为额外信息,我在Global.fs(global.asax)中的启动时添加了ViewEngine,就像这样……

ViewEngines.Engines.Add(new FSharpViewEngine())

解决方法

如果您只想设置基类的属性,则不需要成员或覆盖,而是需要在构造函数中使用赋值运算符< - .要实现引擎,您需要覆盖它定义的两个抽象方法,因此您需要这样的东西:

type FSharpViewEngine() =
    inherit VirtualPathProviderViewEngine() 

    let viewLocations = [| "~/Views/{1}/{0}.fshtml"; "~/Views/Shared/{0}.fshtml" |]
    do base.ViewLocationFormats <- viewLocations
       base.PartialViewLocationFormats <- viewLocations

    override x.CreatePartialView(ctx,path) = failwith "TODO!"
    override x.CreateView(ctx,viewPath,masterPath) = failwith "TODO!"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读