gpt4 book ai didi

asp.net-mvc-3 - 在 F# 中设置 ViewBag 动态对象的属性

转载 作者:行者123 更新时间:2023-12-02 05:18:46 25 4
gpt4 key购买 nike

我在 C# 中有这个操作方法:

  public ActionResult Index() {
ViewBag.Message = "Hello";
return View();
}

这个 View (Index.cshtml):

  <h2>@ViewBag.Message</h2>

这会在页面上产生预期的“Hello”。

我想用 F# 来做 Controller 。我试过了

type MainController() =
inherit Controller()
member x.Index() =
x.ViewBag?Message <- "Hello"
x.View()

这会产生错误消息“找不到方法或对象构造函数‘op_DynamicAssignment’”。

我已经查看了动态运算符的一些 F# 代码示例,但我看不到任何比几页描述和许多行代码更短的内容。对于这个属性“ setter ”来说,它们似乎太笼统了。

最佳答案

ViewBag 属性只是一个包装器,它将 ViewData 集合公开为 dynamic 类型的属性,以便可以动态访问它来自 C#(使用属性集语法)。您可以使用基于 DLR 的 ? 实现来执行此操作(请参阅 this discussion at SO ),但定义将数据直接添加到 ViewDataDictionary 的 ? 运算符会更容易(由 ViewData 属性公开):

let (?<-) (viewData:ViewDataDictionary) (name:string) (value:'T) =
viewData.Add(name, box value)

那么你应该能够写

x.ViewData?Message <- "Hello"

关于asp.net-mvc-3 - 在 F# 中设置 ViewBag 动态对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8149127/

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