有没有办法检查 RenderFragment 是否为空?
例如,在下面的代码中,MyComp显示DetailifOpen为真,您可以Open通过单击标题进行切换。现在,如果没有标题,我希望Detail片段始终处于打开状态。如果有像HeaderTitle.IsEmpty.
<MyComp Open="false">
<HeaderTitle>
@if (!String.IsNullOrEmpty(hdr)) {
...
<div class="flex-grow"> @hdr </div>
}
</HeaderTitle>
<Detail>
...
</Detail>
</MyComp>
Run Code Online (Sandbox Code Playgroud)
编辑
为了进一步讨论,我在这里添加了一个功能请求。
这是一个纯粹的学术问题,但是 关于类型约束的这个问题很难过.提问者以此为例:
type Something<'a, 'b when 'b :> seq<'b>>() =
member __.x = 42
Run Code Online (Sandbox Code Playgroud)
哪个f#开心地编译.现在的问题是你如何制作这个对象?
let z = new Something<???, ???>()
Run Code Online (Sandbox Code Playgroud) 我在浏览器上运行了 Asp.net core 和 gRPC...但现在我得到:
info: Grpc.AspNetCore.Server.ServerCallHandler[2]
Request content-type of 'application/grpc-web' is not supported.
Run Code Online (Sandbox Code Playgroud)
关于如何追踪这个问题有什么想法吗?
这是VS2017中的问题图:
编译器抛出:
FS0039 The namespace 'Web' is not defined.
但是在它之前的'Web'就可以了!
当然,我已经引用了System.Web.Mvc.dll.事实上,如果我把它放在同一个项目中的特定文件中(在本例中是Global.asax.fs),那么开放引用(和代码)就可以正确编译.
更新:
TLDR; 这个问题神秘地消失了......
多次重新编译后,重新启动并重新启动问题仍然存在.最后,我在.fsproj中手动编辑了文件顺序(在Global.asax.fs之后移动myfile.fs)并编译了!然后检查,我将文件顺序移回原始订单......它仍然有效!?!
不知道该说些什么.如果有人有同样的问题,请知道你并不孤单.摆弄它,等待和摆弄一些,问题就会消失......我想......
我正在尝试重新引用解除引用(!)和赋值(:=)运算符,但不是全局运算符.我仍然希望保持通常的ref op重载.这里有一些代码来说明问题:
type MyVar<'a>(init:'a) =
let mutable _value = init
member __.Get() = _value
member __.Set x = _value <- x
//static member (!) (s:MyVar<'a>) = s.Get() // compiles, doesn't work
//static member (:=) (d:MyVar<'a>, s) = d.Set(s) // warning, doesn't work
//let inline (!) (x :MyVar<'a>) = x.Get() // overrides !ref
//let inline (:=) (x :MyVar<'a>) (v :'a) = x.Set(v) // overrides ref := v
let inline (!!) (x :MyVar<'a>) = x.Get() // works but ugly
let inline (.=) …Run Code Online (Sandbox Code Playgroud) 基于属性的测试发现了很多错误。使用 PostgreSQL 修复 bug 后,它最终表现为 JavaScript bug。这是在 Chrome 中测试的:
JSON.stringify("wee"); // "'wee'"
JSON.stringify("we\0e"); // ""we\u0000e""
JSON.parse("'we\u0000e'"); // Uncaught SyntaxError: Unexpected token in JSON at position 0
JSON.parse('"we\u0000e"'); // Uncaught SyntaxError: Unexpected token in JSON at position 3
JSON.parse("\"we\u0000e\""); // Uncaught SyntaxError: Unexpected token in JSON at position 3
JSON.parse(JSON.stringify("we\u0000e")); // "we e" !!
Run Code Online (Sandbox Code Playgroud)
问题是 JSON 是否应该支持字符串中的 '\0'。PostgreSQL 和 C/C++ 说不。其他人说肯定。还有人说也许...
不管怎样,Chrome JS 中的 JSON.parse/stringify 之间肯定存在一些不一致。其他json解析器对'\u0000'没有问题。
我对最后一行完全感到困惑!
如果我们定义这样的|>!运算符怎么办:
let (|>!) a f = async {
let! r = a
return f r
}
Run Code Online (Sandbox Code Playgroud)
然后而不是写作
let! r = fetchAsync()
work r
Run Code Online (Sandbox Code Playgroud)
我们可以写
fetchAsync() |>! work
Run Code Online (Sandbox Code Playgroud)
这是一个好主意还是会产生效率低下的代码?
f# ×4
asp.net-core ×2
blazor ×2
asp.net ×1
asynchronous ×1
code-first ×1
grpc ×1
grpc-web ×1
javascript ×1
json ×1
null ×1
overloading ×1
pipeline ×1
razor ×1
types ×1