私はJson.netを使用してjson文字列を動的に変換しています。このダイナミックをRazorテンプレートのモデルとして使用すると、エラーが発生します...
テンプレートをコンパイルできません。'Newtonsoft.Json.Linq.JObject'には'Name'の定義が含まれておらず、タイプ'Newtonsoft.Json.Linq.JObject'の最初の引数を受け入れる拡張メソッド'Name'が見つかりませんでした(usingディレクティブがありませんか?またはアセンブリリファレンス?)
モデルとして単純な匿名オブジェクトを使用するだけであれば、正常に機能します。
これは、NuGetを使用して2つのライブラリ(Newtonsoft JSONとRazorEngine)をプルした単純なコンソールアプリに表示される問題です。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// template used for generation
var template = "<div>Hello @Model.Name</div>";
// create model
dynamic model = new System.Dynamic.ExpandoObject();
model.Name = "Foo";
// this works just fine
RazorEngine.Razor.Parse(template, model);
// convert model to string
var json = Newtonsoft.Json.JsonConvert.SerializeObject(model);
// regenerate model
model = Newtonsoft.Json.Linq.JObject.Parse(json);
// this prints 'Foo' to the console just fine so the model is valid!
string name = model.Name;
System.Diagnostics.Debug.WriteLine(name);
// this throws the error above!
RazorEngine.Razor.Parse(template, model);
}
}
}
誰かがここで問題を解決するのを手伝ってもらえますか?