在.cshtml文件中,其中的所有內容都是HTML。所以它會寫出完全按照其書面。
換句話說,如果你剛剛輸入
model blah
沒有@
然後當你渲染視圖,這實際上顯示的話在頁面上model blah
。
@
sign是一個告訴Razor引擎的指令,後面是代碼,它應該編譯,而不是簡單地將它寫入輸出。
所以,當你鍵入
@model blah
這是由剃刀編譯,並告訴剃刀引擎,該模型的類型是「胡說」,這樣,當你使用關鍵字Model
(注意是大寫M並且您也必須使用@符號),它將引用您已定義的模型(在此例中爲blah
)。
所以,如果你寫
@model blah
@Model.Foo
然後,如果blah.Foo包含的14號,它會寫14號到輸出。正如你可能猜測的那樣,@
符號有很多用途,所以如果你說@Model.Foo
你實際上在做類似Response.Write(Model.Foo)
的事情。
一般來說,@
符號被用來從HTML模式轉型,代碼模式,在老ASPX代碼肉塊用<% ... %>
以同樣的方式,但是剃鬚刀是有點小聰明,理解你的代碼的情況下,因此可以推斷出您的代碼在大部分時間結束的位置,因此不需要像過去那樣有末端括號。
@using
就像在C#代碼中一樣,它是在塊結束後處置可用資源的using語句。 Razor在很多情況下使用這種技術來表示代碼塊的結束。所以,舉例說:
@using(Html.BeginForm()) {
....
}
的Html.BeginForm
助手在這種情況下返回一個對象,它定義了一個IDisposable
接口,當使用語句結束時調用,所以BeginForm()
輸出<form>
標籤,當IDisposable.Dispose()
方法在使用語句結束時調用,它輸出</form>
。這是一種技術,用於包裝其他輸出標籤的代碼,以便它可以正確關閉它們的html。
@Html
也只是C#。然而,它調用HtmlHelper對象(Razor在支持視圖的「ViewPage」類中定義了一個名爲Html的對象,此Html對象類型爲HtmlHelper),它調用已在HtmlHelper對象上定義的各種C#擴展方法。如果你不知道C#擴展方法是什麼,那麼這是擴展對象而不必重寫這些對象的一種方法,這是更高級的C#。可以這麼說,像@Html.TextBox()
這樣的東西調用HtmlHelper.TextBox()
類型的方法,所以它只是一個可以調用的C#方法,但是這些方法是作爲助手創建的,可以幫助您創建HTML。
真的有很多,如果你不理解我所討論的概念,那麼你真的需要了解更多關於C#和/或HTML的知識,因爲你可能會陷入困境。
這只是剃刀的語法。 –
請參閱http://www.asp.net/web-pages/overview/getting-started/introducing-razor-syntax-%28c%29 –
爲什麼這個問題有3票?這個問題甚至不是有效的。你在一個問幾個問題。 – ataravati