我有一个WebSharper网站,并且希望在移动设备上具有不同的UI。我希望服务器使用不同的HTML响应,具体取决于用户是否在移动设备上。我可以看到如何检查用户是否在mobile device in ASP.NET上,但无法告诉用户如何将其移植到WebSharper。

最佳答案

WebSharper中的Context对象具有一个Environment字典,该字典包含原始上下文。您可以通过那到达Request.Browser.IsMobileDevice。使用UI.Next客户端-服务器模板,您可以执行以下操作:

module Site

open WebSharper
open WebSharper.Sitelets
open WebSharper.UI.Next
open WebSharper.UI.Next.Server

type EndPoint =
    | [<EndPoint "/">] Home

open WebSharper.UI.Next.Html

type Page = { Desktop: Doc; Mobile: Doc }
let mkPage desktop mobile = { Desktop = desktop; Mobile = mobile }

let HomePage =
    mkPage
    <| h1 [text "Desktop page!"]
    <| h1 [text "Mobile page!"]

let PickPage (ctx : Context<_>) page =
    let context = ctx.Environment.["HttpContext"] :?> System.Web.HttpContextWrapper
    if context.Request.Browser.IsMobileDevice then page.Mobile
    else page.Desktop
    |> Content.Page

[<Website>]
let Main =
    Application.MultiPage (fun ctx endpoint ->
        match endpoint with
        | EndPoint.Home -> PickPage ctx HomePage
    )

关于f# - 在WebSharper中显示移动页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34733814/

10-10 17:58