MVC 多数据在同一cshtml中获取

zhaocheng761115 2013-10-25 12:40:54
如题,想在同一个CSHTML页面,同时显示资讯的类别数据和资讯明细数据,应如何做!

在一个页面中,@model IEnumerable<MvcNews.Models.Categorys>只能是一条,所以现在获取了分类数据,但是无法获取明细数据。

鞠躬感谢。
...全文
730 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zh2yu 2015-07-04
  • 打赏
  • 举报
回复
楼主,你的问题解决了么,我也碰到相同的问题,找不到解决方法,请指教
ProjectDD 2014-09-29
  • 打赏
  • 举报
回复
自己多定义一个强类型,其实为了这类需要自己去多定义强类型,包含所需要的实体类型或其集合的 组合 ,好象是对味楼主的需求的,但这样难免让怎么实体定义变得泛烂,也就是在基本业务实体之上 还有一层 视图实体,这样非常 不好,增加了复杂度 可以考虑用范型 或自定义泛型来解决这个问题,可能比 那个ViewBag的 dynamic 类型要稍好一点点 比如 那个系统提供的Tuple<T1,...T7>
zhaocheng761115 2013-10-26
  • 打赏
  • 举报
回复
继续求指点!
feiyun0112 2013-10-25
  • 打赏
  • 举报
回复
建一个新model,2个属性,对应分类数据,明细数据。


*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
zhaocheng761115 2013-10-25
  • 打赏
  • 举报
回复
另:"kxm_2012"方法,请问具体如何实现? 可否给简易的代码一看?感谢。
zhaocheng761115 2013-10-25
  • 打赏
  • 举报
回复
抱歉,大家可能被我举得例子扰乱了,像“yongchaochu ”所说方法,我认为跟“feiyun0112”的方法原理是一样的,我的意思是完全没关系的两个强类型数据,如何显示到一个cshtml中,因为ActionResult返回值只有一个,像图示这样:
chen_ya_ping 2013-10-25
  • 打赏
  • 举报
回复
新建一个总的UI model,来存放你放回到这个页面上的数据数据 或者可以依靠实体类以外的方法来返回你要的数据
魂之挽歌来袭 2013-10-25
  • 打赏
  • 举报
回复
引用 7 楼 zhaocheng761115 的回复:
OK,感谢“shiyong7682719 ”回复。 以下是我自己的笨办法:

HomeController:
      NewsContext db = new DAL.NewsContext();

        public ActionResult Index()
        {

            ViewBag.NewsData = db.News.ToList();
            ViewBag.CategoryData = db.Category.ToList();

            return View();
        }


Index.cshtml:
<div class="wrapper clearfix">
    <div class="leftcolumn width40">
        <ol class="round">
            <li class="one">
                <h5>Category</h5>
                @foreach (var citem in ViewBag.CategoryData)
                {
                    <div>@citem.CTitle</div>
                }
            </li>
            <li class="two">
                <h5>Searching</h5>
            </li>
        </ol>
    </div>
    <div class="rightcolumn width60">
        <ol class="round">
            <li class="one">
                <h5>News List</h5>
                @foreach (var nitem in ViewBag.NewsData)
                {
                    <div>@nitem.NTitle</div>
                }
            </li>
        </ol>
    </div>
</div>
能够实现,但是我想的是如果用强类型数据,应该如何做?
是不是可以考虑 新建一个model model有两个属性,一个是News类型,一个是Catogry类型的
  • 打赏
  • 举报
回复
@Html.LabelFor(model=>mode.NTitle)
yongchaochu 2013-10-25
  • 打赏
  • 举报
回复
Public Class NewClass { public zixunClass{get;set} public mingxiClass{get;set;} //也可以把两个类里的属性都拿来,看你自己 public string... public string... } 写sql或者linq 获取数据集合给newClass赋值 例如:newClass=from a in zixunClass from b in mingxiClass on a.id=b.aid select new NewClass { //newClass的属性赋值 };
zhaocheng761115 2013-10-25
  • 打赏
  • 举报
回复
肯请大侠们不吝指教!
zhaocheng761115 2013-10-25
  • 打赏
  • 举报
回复
OK,感谢“shiyong7682719 ”回复。 以下是我自己的笨办法:

HomeController:
      NewsContext db = new DAL.NewsContext();

        public ActionResult Index()
        {

            ViewBag.NewsData = db.News.ToList();
            ViewBag.CategoryData = db.Category.ToList();

            return View();
        }


Index.cshtml:
<div class="wrapper clearfix">
    <div class="leftcolumn width40">
        <ol class="round">
            <li class="one">
                <h5>Category</h5>
                @foreach (var citem in ViewBag.CategoryData)
                {
                    <div>@citem.CTitle</div>
                }
            </li>
            <li class="two">
                <h5>Searching</h5>
            </li>
        </ol>
    </div>
    <div class="rightcolumn width60">
        <ol class="round">
            <li class="one">
                <h5>News List</h5>
                @foreach (var nitem in ViewBag.NewsData)
                {
                    <div>@nitem.NTitle</div>
                }
            </li>
        </ol>
    </div>
</div>
能够实现,但是我想的是如果用强类型数据,应该如何做?
  • 打赏
  • 举报
回复
意思是重新建一个model,把model1和model2的值存model; 然后CSHTML映射新建的model
zhaocheng761115 2013-10-25
  • 打赏
  • 举报
回复
感谢回复, 这个结果我能弄出来,但这不是我想要的:代码如下:

<div class="wrapper clearfix">    
    <div class="leftcolumn width40">
        <ol class="round">
            <li class="one">
                <h5>Category</h5>
                @foreach (var citem in Model)
                {
                    <div>@Html.DisplayFor(item=>citem.CTitle)</div> 
                 }
            </li>            
            <li class="two">
                <h5>Searching</h5>
            </li>
        </ol>
    </div>
    <div class="rightcolumn width60">
        <ol class="round">
            <li class="one"><h5>News List</h5></li>
            @foreach(var nitem in citem.news)
            {
                <div>@Html.DisplayFor(item => nitem.NTitle)</div>
            }
        </ol>
    </div>
</div>

再次感谢!
feiyun0112 2013-10-25
  • 打赏
  • 举报
回复
@foreach (var citem in Model)
{
<div>@Html.DisplayFor(item=>citem.CTitle)</div>
@foreach (var nitem in citem.news )
{
<div>@Html.DisplayFor(item=>nitem.NTitle)</div>
}
}
zhaocheng761115 2013-10-25
  • 打赏
  • 举报
回复
对应视图文件:Index.cshtml:

@model IEnumerable<MvcNews.Models.Categorys>

@{
    ViewBag.Title = "Home Page";
}
@section featured {
    <section class="featured">
        <div class="content-wrapper">
            <hgroup class="title">
                <h1>@ViewBag.Title.</h1>                
                <h2>@ViewBag.Message</h2>
            </hgroup>
            <p>
                To learn more about ASP.NET MVC visit
                <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
                The page features <mark>videos, tutorials, and samples</mark> to help you get the most from ASP.NET MVC.
                If you have any questions about ASP.NET MVC visit
                <a href="http://forums.asp.net/1146.aspx/1?MVC" title="ASP.NET MVC Forum">our forums</a>.
            </p>
        </div>
    </section>
}
<div class="wrapper clearfix">
    <div class="leftcolumn width40">
        <ol class="round">
            <li class="one">
                <h5>Category</h5>
                @foreach (var citem in Model)
                {
                    <div>@Html.DisplayFor(item=>citem.CTitle)</div> 
                }
            </li>
            <li class="two">
                <h5>Searching</h5>
            </li>
        </ol>
    </div>
    <div class="rightcolumn width60">
        <ol class="round">
            <li class="one"><h5>News List</h5></li>
        </ol>
    </div>
</div>

zhaocheng761115 2013-10-25
  • 打赏
  • 举报
回复
感谢大侠回复...... 本人菜鸟求教,诸多不明之处,这个新model应如何写法?写好后如何在视图中调用? 可否烦请大侠给个简易代码参照一二? 再次感谢!随附本人代码如下:

ModelS:News.cs: public class News
    {
        [Key]
        public int NID { get; set; }
        public int CID { get; set; }
        [Required]
        [StringLength(128)]
        [DisplayName("资讯标题")]
        public string NTitle { get; set; }
        [Required]
        [DisplayName("资讯内容")]
        public string NContent { get; set; }
        [StringLength(40)]
        [DisplayName("关联图片")]
        public string NImageName { get; set; }
        [DisplayName("发布人")]
        public int NAuthorID { get; set; }
        [DefaultValue(typeof(DateTime), "")]
        [DisplayName("发布日期")]
        public DateTime NPublishDate { get; set; }
        [DefaultValue(0)]
        [DisplayName("浏览次数")]
        public int NReadCount { get; set; }

        public virtual Categorys category { get; set; }
    }

Categorys.cs:
    public class Categorys
    {
        [Key]
        public int CID { get; set; }
        public int DID { get; set; }
        [Required]
        [StringLength(128)]
        [DisplayName("分类标题")]
        public string CTitle { get; set; }
        [DisplayName("分类描述")]
        public string CContent { get; set; }
        [Required]
        [StringLength(3)]
        [DefaultValue("CN")]
        [DisplayName("关联语言")]
        public string CLanguage { get; set; }
        [Required(AllowEmptyStrings = true)]
        [DisplayName("分类标记")]
        public string CMarker { get; set; }
        [DefaultValue(0)]
        [DisplayName("关联资讯数")]
        public int CNewsCount { get; set; }

        public virtual ICollection<News> news { get; set; }
        public virtual Domains domains { get; set; }
    }

内容概要:本文档提供了适用于算法竞赛的Java语言模板代码,重点涵盖动态规划与图论两大核心领域。动态规划部分包括01背包、完全背包、多重背包的二进制拆分优化、最长上升子序列(LIS)的O(n log n)解法以及最长公共子序列(LCS)的标准DP实现。图论部分涵盖了Dijkstra(堆优化)、SPFA(可检测负环)、Floyd-Warshall(多源最短路径)、Kruskal和Prim(最小生成树)等经典算法。此外还包含网络流领域的Dinic算法完整模板及其使用示例,适用于解决最大流问题。所有代码均以简洁高效的竞赛风格编写,具备直接应用价值。; 适合人群:具备Java编程基础,正在准备程序设计竞赛(如ACM/ICPC、蓝桥杯、力扣周赛等)的学生或开发者,尤其是对算法实现细节有较高要求的高级选手。; 使用场景及目标:①快速查阅和复用经典算法模板,提升竞赛的编码效率;②深入理解动态规划与图论算法的核心实现机制,强化算法调试与优化能力;③通过Dinic等高级算法掌握网络流问题的建模与求解方法; 阅读建议:建议结合实际题目进行练习,理解每段代码的边界条件与数据结构设计,注重对算法复杂度和适用范围的掌握,并在实践不断优化个人模板库。

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧