none
關於Lambda的一個問題 RRS feed

  • 問題

  • 在看 保哥 出的 MVC2的書

    有一段程式螞是這樣寫的

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.GuestbookForm>" %>

    把上面這行加入 網頁中就可以使用 Lambda

    <%=Html.LabelFor(x=>x.姓名) %>

    這樣怎麼解釋啊  x 又沒被定義  為何可以這樣用

     

    2011年3月4日 上午 08:43

解答

  • <%=Html.LabelFor(x=>x.姓名) %>

    的意思是:

    1) x是傳給Html類別的LabelFor方法的參數(Lambda Expression允許參數不用事先宣告)

    2) Html類別的LabelFor方法拿到x參數之後, 會取出x參數的[姓名]屬性的內容值來使用

    2011年3月4日 下午 02:07
  • Html.LabelFor 是依據View的Model來決定

     

    下面這句表示目前這個View的Model是GuestbookForm類別

    System.Web.Mvc.ViewPage<MvcApplication1.Models.GuestbookForm>

     

    所以這句的x就是GuestbookForm物件

    Html.LabelFor(x=>x.姓名)

    • 已標示為解答 布利 2011年3月11日 上午 02:41
    2011年3月6日 上午 08:07

所有回覆

  • Hi 布利,

    關於Lambda的介紹請參考MSDNLambda運算式

    MSDN的官方解釋是: Lambda 運算子的左邊會指定輸入參數 (如果存在),右邊則包含運算式或陳述式區塊。Lambda 運算式 x => x * x 的意思是「x 移至 x 乘以 x」。

    希望以上內容對你有幫助。


    Ouch Liu
    Welcome to visit by blog: Ouch@點部落
    2011年3月4日 上午 09:22
  • <%=Html.LabelFor(x=>x.姓名) %>

    的意思是:

    1) x是傳給Html類別的LabelFor方法的參數(Lambda Expression允許參數不用事先宣告)

    2) Html類別的LabelFor方法拿到x參數之後, 會取出x參數的[姓名]屬性的內容值來使用

    2011年3月4日 下午 02:07
  • <%=Html.LabelFor(x=>x.姓名) %>

    的意思是:

    1) x是傳給Html類別的LabelFor方法的參數(Lambda Expression允許參數不用事先宣告)

    2) Html類別的LabelFor方法拿到x參數之後, 會取出x參數的[姓名]屬性的內容值來使用


    可是在這個案例中

    為何  x 自動就與MvcApplication1.Models.GuestbookForm  關連在一起

    因為 若我把 MvcApplication1.Models.GuestbookForm改成 dynamic  就不會有自動intelligence了

    其實  是有點不太瞭解這之間的關連  請大大幫忙一下

    2011年3月5日 下午 09:42
  • 會自動關聯是Lambda語法的關係, 而dynamic是動態語言的型態, 要直接變數填入值才會知道型態
    2011年3月6日 上午 08:01
  • Html.LabelFor 是依據View的Model來決定

     

    下面這句表示目前這個View的Model是GuestbookForm類別

    System.Web.Mvc.ViewPage<MvcApplication1.Models.GuestbookForm>

     

    所以這句的x就是GuestbookForm物件

    Html.LabelFor(x=>x.姓名)

    • 已標示為解答 布利 2011年3月11日 上午 02:41
    2011年3月6日 上午 08:07