初心者対ASP.NET MVC疑惑

1692 ワード

長年のWEB FORMの開発方式に慣れて、突然MVCに転向して、急にぼんやりして、頭がくらくらして転向して、多くの慣れていないで、多くの分からないで、今までも理解していないで、先に覚えて、応用の中で一つ一つ解くしかありません.
主にビュー(View)に集中します.
1、@Html
ビューここには@Html.***があちこちにあり、では、このHtmlはどこから出てきたのですか?声明もない.
実際には、HtmlはViewPageのHtmlHelperタイプのプロパティであるため、宣言する必要はありません.
2、このHtmlHelperにも関係があります.
この元のタイプHtmlHelperを拡張します.例えば、次のコードがあります.
namespace System.Web.Mvc.Html
{
    public static class HtmlExtensions
    {
        public static string Span(this HtmlHelper helper, string strId, string strContent)
        {
            return string.Format("<span id=\"{0}\">{1}</span>", strId, strContent);
        }
    }
}

ビューページで、次のように呼び出されます.
@Html.Span("span1","    span")

見ましたか.定義するときは3つのパラメータなのに、どうやって呼び出すときは2つしかありませんか.
私が長い間閉塞していたことを説明して、もうずいぶん遅れています.
実際、最初のパラメータにはthis修飾子があり、このメソッドが最初のパラメータというタイプのオブジェクトに使用されることを表します.例えば、上記のコードでは、Spanという方法は、HtmlHelperというタイプのオブジェクトに使用されます.
3、Model
ビューでは、ModelもHtmlのようなもので、定義せずに使用できます.実際、ModelはViewDataのプロパティです.しかし、なぜか、ViewPageやViewDataのようなものは表示されなくてもいいのです.
4、lambda式
例えば@Html.TextBoxFor(m => m.Name)
やあ!このmはまたどこから出てきたのですか?まさか、それは誰の属性なのか.実は、mを他の名前に変えるように成立します.例えば@Html.TextBox For(y=>y.Name)は、少しも問題ありません.
Lambda式は、x=>x*xのような匿名関数であり、xはパラメータであり、x*xは関数体である.さらに,システムは関数体に基づいてこのxのタイプを推測し,例えばここでx推定は数値型である.
同様に、ビューでは、私たちが使いたいモデルオブジェクトをlambda式に基づいて推測し、対応する処理を行うビューエンジンのようなものがあると思います.
これは別におかしくない.ウェブページを作るように、HTMLコードを書いたり、CSSやjavascriptを少し埋め込んだりして、結果的にきらびやかで多彩なページが現れました.この数行のコードにはこのような魔力がありますか?いいえ、肝心なのはブラウザで、ブラウザがコードに基づいて相応の処理と提示をしたからこそ、多彩なページがあり、核心はブラウザにあります.手帳で開くと、数行のコードにすぎません.