概述
asp.net MVC中,现有多个控制器需要共用同一个视图,并且要传自己的实体类供视图操作。问题是,这些实体类的类型并不相同,里面的属性有部分出入。那么在共用视图的情况下,视图要如何处理这些实体类呢?
我们知道,不管是通过View("视图名",实体类),还是通过ViewBag传递,在视图中,都需要转换回原先的类型,才能进行使用。现在传递过来的实体类类型不同,那么转换的话,就让人为难了。
当然,通过传递一个额外的类型参数,在视图中加以判断,分别转换,这样是可以的,但总觉有点笨。
有一种方案是:在控制器中,将实体类全部转换为JObject,然后在视图中,统一操作JObject对象。
没代码没J8:
controller:
using Newtonsoft.Json.Linq;
public ActionResult ControllerA(int id)
{
EntityA objA = ... //获取实体类A对象
return View("PublicView", JObject.FromObject(objA));
}
public ActionResult ControllerB(int id)
{
EntityB objB = ... //获取实体类B对象
return View("PublicView", JObject.FromObject(objB));
}
@model Newtonsoft.Json.Linq.JObject
@using Newtonsoft.Json.Linq;
@{
Layout = null;
int id = Model.Value<int>("ID");
string owner = Model.Value<string>("Owner");
string createTime = Model.Value<DateTime?>("CreateTime").ToString() ?? "";
}
版权声明:本文为博主原屙文章,喜欢你就担走。
转载于:https://www.cnblogs.com/leftfist/p/4764266.html
最后
以上就是美好饼干为你收集整理的多控制器传递不同类型实体类到共用视图方案的全部内容,希望文章能够帮你解决多控制器传递不同类型实体类到共用视图方案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复