Asp.net mvc HtmlHelper MVC 5 F#
我曾尝试在F#中为MVC 5应用程序创建HtmlHelper,我的实现如下:Asp.net mvc HtmlHelper MVC 5 F#,asp.net-mvc,razor,f#,html-helper,Asp.net Mvc,Razor,F#,Html Helper,我曾尝试在F#中为MVC 5应用程序创建HtmlHelper,我的实现如下: namespace FSharpStore.WebUI.HtmlHelpers module PagingHelpers = type HtmlHelper with static member PageLinks(info: PagingInfo, url : UrlHelper) : MvcHtmlString = let pageUrl x = url.Action("List", x.
namespace FSharpStore.WebUI.HtmlHelpers
module PagingHelpers =
type HtmlHelper with
static member PageLinks(info: PagingInfo, url : UrlHelper) : MvcHtmlString =
let pageUrl x = url.Action("List", x.ToString())
let sb = new StringBuilder()
for i in 0..info.TotalPages do
let tag = new TagBuilder("a")
tag.MergeAttribute("href", pageUrl(i))
tag.InnerHtml <- i.ToString()
if i = info.CurrentPage then
tag.AddCssClass("selected")
tag.AddCssClass("btn-primary")
tag.AddCssClass("btn btn-default")
sb.Append(tag.ToString()) |> ignore
MvcHtmlString.Create(sb.ToString())
命名空间FSharpStore.WebUI.HtmlHelpers
模块分页帮助器=
键入HtmlHelper和
静态成员页面链接(信息:PaginInfo,url:UrlHelper):MvcHtmlString=
让pageUrl x=url.Action(“List”,x.ToString())
让sb=新的StringBuilder()
对于0中的i..info.TotalPages do
让标记=新标记生成器(“a”)
tag.MergeAttribute(“href”,页面URL(i))
tag.InnerHtml忽略
MvcHtmlString.Create(sb.ToString())
因此,我尝试使用它:
@使用FSharpStore.WebUI.HtmlHelpers
@页面链接(Model.pagininfo,this.Url)
代码不可编译,它会给我消息:
“System.Web.Mvc.HtmlHelper”不包含“PageLinks”的定义,并且找不到接受“System.Web.Mvc.HtmlHelper”类型的第一个参数的扩展方法“PageLinks”(是否缺少using指令或程序集引用?)
有人在F#成功地完成了HtmlHelper吗?我曾尝试在项目的不同部分使用代码扩展,它们只是在工作。我觉得剃须刀本身很特别 我认为,为了使它作为静态扩展方法工作,您需要将它嵌套在具有
[]
属性的类型中。方法本身也应该用[]
属性修饰。
另外,在您试图使用它的页面中,您是否在using语句中实际导入了您试图访问的模块?您的代码是有效的F#扩展方法。但这只对F#可见。为了在C中使用扩展方法,必须使用“C方式”。因此,HtmlHelper代码:
namespace FsCsMvc41WeApp.Helpers
open System.Runtime.CompilerServices
open System.Web;
open System.Web.Mvc;
[<Extension>]
type MyHelpers =
[<Extension>]
static member sayHello(helper : HtmlHelper, name: string) =
new HtmlString("Hello " + name)
名称空间FsCsMvc41WeApp.Helpers
open System.Runtime.CompilerServices
开放系统.Web;
opensystem.Web.Mvc;
[]
类型MyHelpers=
[]
静态成员sayHello(助手:HtmlHelper,名称:string)=
新HtmlString(“你好”+姓名)
而剃须刀视图:
@using FsCsMvc41WeApp.Helpers
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
</head>
<body>
<div>
@Html.sayHello("Nicolás")
</div>
</body>
</html>
@使用FsCsMvc41WeApp.Helpers
@{
布局=空;
}
指数
@Html.sayHello(“尼古拉斯”)
看一看。