web-dev-qa-db-ja.com

Razorビューファイル内で一般的な構文を使用する方法

次のステートメントを使用しようとしました:

@Html.Test<ISQL>().Nand()

ただし、RazorはISQLの前の<で窒息しています。

公式の回避策はありますか?

70
kidoman

ジェネリックメソッドを使用するには、式をエスケープする必要があります

@(Html.Test<ISQL>().Nand())
96
marcind

Mvcをアップグレードするときにこの「同じエラー」を探していたときに、この質問を見つけました。

私が持っていた:

機能しません:

@{ 
   ViewBag.Title = "Something " + @Model.Title;
   var something = (IEnumerable<SelectListItem>)ViewBag.Options;    
}

どうやら、構文はより厳密になり、@ {}ブロック内にいるため、例のModel.Titleの前に@を追加しないでください。しかし、コードエディターのエラーはジェネリックを指していて、それは私を夢中にさせていました。

コード内に<>がない場合は問題なく動作しますが、Model.Titleから@を削除するだけで問題が解決します。

作品:

@{ 
   ViewBag.Title = "Something " + Model.Title;
   var something = (IEnumerable<SelectListItem>)ViewBag.Options;    
}

これが誰にも役立つことを願っています

14
Juan Carrey

この「回答」はやや遅れており、質問への回答は明らかに満足のいくものになっています。ただし、このページへの今後の訪問者のために、より完全なリファレンスガイドが必要な場合は、Razor構文の MSの紹介 とPhil Haackの非常に便利 Razorクイックリファレンス ブログ投稿。

6
Rich O'Kelly

1つの内部に複数の割り当てがあると、奇妙なケースが発生しました@{ ... }ボック。

@{
    // ... other assignments (without error)
    List<string> stringList = new List<string>()  // ERROR MESSAGE HERE
}

私がしたことは何でも、常に次のようなエラーがありました:

ジェネリック型 'List'を使用するには、型引数が1つ必要です

ソリューション:割り当て行をsecond@{ ... }bock

@{
    // ... other assignments
}
@{
    List<string> stringList = new List<string>()  // WORKS
}
4
Beauty

@文字についてです。この例はアップグレード前に機能します

@{
    string @class = ViewBag.@class;
    IDictionary<string, object> htmlAttributes = new Dictionary<string, object>();
}

アップグレード後、2つのブロックに分割する必要があります

@{  string @class = ViewBag.@class; }
@{  IDictionary<string, object> attrs = new Dictionary<string, object>(); }
2
fred