我有一个ASP.NET MVC应用程序。这个应用程序与第三方休息服务交互。我将一些属性的名称传递给服务。例如,"property1,property2“。该服务返回如下所示的一些JSON:
"results":{
"property1Type":"Collection",
"property1":[
{"found":3,"name":"Toys"}
],
"property2Type":"Collection",
"property2":[]
}我试图在一个found部分中打印每个属性的name和ASP.NET值。目前,我认为:
@foreach (var propertyName in Model.PropertyNames)
{
var response = Model.Response[propertyName];
Html.RenderPartial("~/Views/Shared/_Result.cshtml", response);
}PropertyNames属性是我传递给服务的属性名称的列表(即"property1,property2")。Response属性是从返回的JSON中解析的JObject。
到目前为止,这段代码工作正常。我的问题是在_Result.cshtml。我的代码如下所示:
@if (Model.HasValues) {
<div>@Model.Values("name")</div>
<div>@Model.Values("found")</div>
<div>@Model</div>
} else {
<div>nothing</div>
}当执行这段代码时,我会得到以下错误:
'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException‘类型的异常发生在System.Core.dll中,但在用户代码附加信息中没有处理:方法“值”没有过载接受“1”参数
当我查看JArray.Values方法时,我看到了两个重载。接受object作为参数的1。不接受参数的1。因为这个原因,这个错误对我来说毫无意义。如果删除对@Model.Values的调用,则@Model调用运行良好并打印出来:
[ { "found": 3, "name": "Toys" } ]我做错了什么?如何在“部分”中打印“查找”的值和名称?
谢谢!
发布于 2014-12-19 19:41:31
您是想使用.Value()而不是.Values()吗?
1.htm
错误是正确的,因为.Values()不带任何参数。
1.htm
<div>@Model.Value("name")</div>
<div>@Model.Value("found")</div>https://stackoverflow.com/questions/27569779
复制相似问题