2016-06-22 5 views
0

このビュー・ファイルでは、すべてのPageName値が同じになります。なぜこれはそうですか? @modelはモデルタイプを宣言していることを理解しています。 @Modelはモデルを画面上にレンダリングすることを理解しています。私が混乱しているのは、@ Model.PageNameがHTMLヘルパーのModel.PageNameと一致する理由です。@Modelとビュー・ファイルのモデル

@model Pages 

<div class="moduleName">@Model.PageName</div> 
<div class="moduleName">@Html.Raw(@Model.PageName)</div> 
<div class="moduleName">@Html.Raw(Model.PageName)</div> 

似たような質問がたくさんありますが、これによく似たものは見つかりませんでした。たとえば、@Model vs @modelです。

大変申し訳ございません。また、@記号はエスケープのない文字列リテラルを示すものであり、また予約されたキーワードでもある変数に名前を付けるときにも使用されます。それらがここにどのように適用されるかは不明です。

ありがとうございました!

答えて

2

この文脈には違いはありません。 C#の識別子の先頭には、@classという名前の変数を宣言できますが、classではなく、キーワードと区別するために@が付いています。 @符号は識別子の一部ではないので、@MyVarMyVarは同じ識別子です。

@より前のバージョンHtmlは、コンテキストをHTMLからC#コードビハインドに変更するひげ剃りエスケープ文字です。いったんそこにいれば@の前にModelは、Modelのようにビューの静的Modelプロパティにバインドするため何もしません。次のように

は、だから、各行を解釈することができます

<div class="moduleName">--begin C# expression-- Model.PageName --end C# expression--</div> 
<div class="moduleName">--begin C# expression-- Html.Raw(Model.PageName) --end C# expression--</div> 
<div class="moduleName">--begin C# expression-- Html.Raw(Model.PageName) --end C# expression--</div> 
関連する問題