Set a property on ViewBag dynamic object in F#

前端 未结 3 898
伪装坚强ぢ
伪装坚强ぢ 2021-02-09 05:35

I have this action method in C#:

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

And this

3条回答
  •  花落未央
    2021-02-09 06:15

    The ViewBag property is just a wrapper that exposes the ViewData collection as a property of type dynamic, so that it can be accessed dynamically from C# (using property set syntax). You could use implementation of ? based on DLR to do that (see this discussion at SO), but it is easier to define ? operator that adds data directly to ViewDataDictionary (which is exposed by the ViewData property):

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

    Then you should be able to write

    x.ViewData?Message <- "Hello"
    

提交回复
热议问题