我将json对象渲染为视图源的一部分。我想将该json转换为C#模型对象并将该对象传递给局部视图,因为部分视图强烈地类型化为模型对象。
例如:
jsonIdentifier = '{"Identifier": { "name":"uno","contextId":"dos"}}'
@{ model.Identifier = Parsing(jsonIdentifier)}
@Html.Partial("_IdentifierPartial", m=>m.Identifier) //where Identifier is the object needs to be passed to _IdentifierPartial
答案 0 :(得分:0)
您应该使用@ Html.Action而不是@ Html.Partial。只需将jsonIdentifier作为字符串参数传递,然后使用Json.NET将其转换为适当的类型对象。
如...
Output my partial with that Json:
<div>
@{
string json = "{Make: \"Toyota\", Model: \"Camry\", Year: 2017}";
}
@Html.Action("RenderCarScreen", new { carJson = json });
</div>
您的网络方法看起来像这样......
public ActionResult RenderCarScreen(string carJson)
{
Car car = Newtonsoft.Json.JsonConvert.DeserializeObject<Car>(carJson);
return PartialView("CarScreen", car);
}
答案 1 :(得分:0)
我们可以在@Html.Action()
和@Html.Partial
的帮助下实现这一目标。
@Html.Action()
需要操作方法,在动作方法的帮助下呈现部分页面。 @Html.Partial()
不需要操作方法,基于它呈现页面的对象值。因此@Html.Partial()
与@Html.Action()
相比具有更好的效果。
using Newtonsoft.Json;
@{
string JsonStr = {\"user\":\"me\",\"payment_method\":\"card\",\"items_bought\":[{\"id\":\"001\",\"name\":\"desk\",\"delivered\":\"true\"},{\"id\":\"455\",\"name\":\"chair\","delivered\":\"false\"},{\"id\":\"234\",\"name\":\"mousepad\",\"delivered\":"false\"},{\"id\":\"135\",\"name\":\"cabinet\",\"delivered\":\"false\"}]}
var JsonObject = JsonConvert.DeserializeObject<MyJSON>(JsonStr);
}
<div>
@Html.Partial("_IdentifierPartial", JsonObject)
</div>
上述代码可以正常运行并达到您的要求。但是这种方法不可取,更好的是你可以将json字符串转换为控制器端的模型对象并将模型对象传递给视图。
对于Ex:
@model ModelClass
<div>
@Html.Partial("_IdentifierPartial",Model.PartialModel)
</div>
以上方法使浏览器中的页面更快。