我正在使用 Json.net 将 json 字符串转换为动态字符串。当我将此动态用作 Razor 模板的模型时,出现错误...
无法编译模板。'Newtonsoft.Json.Linq.JObject' 不包含'Name' 的定义,并且找不到接受'Newtonsoft.Json.Linq.JObject' 类型的第一个参数的扩展方法'Name'(您是否缺少 using 指令还是汇编参考?)
如果我只使用一个简单的匿名对象作为模型,它就可以正常工作。
这是一个简单的控制台应用程序中显示的问题,我使用 NuGet 拉入两个库...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);
}
}
}
有人可以帮我解决这里的问题吗?