asp.net – RAZOR MVC3:重用的部分视图
我有两个实体 – PopularTutorial和Blog.此数据需要显示在主页视图中,如下所示.关键点是“PopularTutorial”应该在其他视图中重用,Bloglist也可以在其他视图中重用. “PopularTutorial”部分中有一个手动分页选项.单击第1页时,将列出前3个热门教程.单击第2页时,将列出教程4到6.
我知道“局部视野”是要走的路.当我搜索时,我遇到了涉及jQuery和JSON的方法.我想知道这是否可以在没有明确使用jQuery和JSON的情况下完成(在RAZOR中). 你可以帮我在RAOZR帮忙吗? 说实话 – 我是在学习MVC中的AJAX之前做的一步.所以我的下一次尝试将是ajaxify它.如果你能提供一个以ajax方式工作的答案,那将是很棒的. public class PopularTutorial { public int ID { get; set; } public int NumberOfReads { get; set; } public string Title { get; set; } } public class Blog { public int ID { get; set; } public string Head { get; set; } public string PostBy { get; set; } public string Content { get; set; } } namespace MyArticleSummaryTEST.Controllers { public class HomePageViewModel { public IEnumerable<Blog> BlogList { get; set; } public IEnumerable<PopularTutorial> PopularBlogs { get; set; } } public class ArticleController : Controller { private IEnumerable<PopularTutorial> GetPopularBlogs() { List<PopularTutorial> popularArticleList = new List<PopularTutorial>() { new PopularTutorial{ID=17,Title="Test1",NumberOfReads=1050},new PopularTutorial{ID=18,Title="Test2",NumberOfReads=5550},new PopularTutorial{ID=19,Title="Test3",NumberOfReads=3338} }; return popularArticleList; } private IEnumerable<Blog> GetAllBlogEntries() { List<Blog> articleSummaryList = new List<Blog>() { new Blog {ID=1,Head="Introduction to MVC",PostBy="Lijo",Content="This is a ..."},new Blog {ID=2,Head="jQuery Hidden Gems",new Blog {ID=3,Head="Webforms Intenals",Content="This is a ..."} }; return articleSummaryList; } } } 读: > http://www.mikesdotnetting.com/Article/154/Looking-At-The-WebMatrix-WebGrid 解决方法
这是一个可以帮助您入门的示例:
楷模: public class PopularTutorial { public int ID { get; set; } public int NumberOfReads { get; set; } public string Title { get; set; } } public class Blog { public int ID { get; set; } public string Head { get; set; } public string PostBy { get; set; } public string Content { get; set; } } 控制器: public class ArticlesController : Controller { public ActionResult Index() { return View(); } [ChildActionOnly] public ActionResult Blogs() { return PartialView(GetAllBlogEntries()); } [ChildActionOnly] public ActionResult Popular() { return PartialView(GetPopularBlogs()); } private IEnumerable<PopularTutorial> GetPopularBlogs() { return new[] { new PopularTutorial { ID = 17,Title = "Test1",NumberOfReads = 1050 },new PopularTutorial { ID = 18,Title = "Test2",NumberOfReads = 5550 },new PopularTutorial { ID = 19,Title = "Test3",NumberOfReads = 3338 },new PopularTutorial { ID = 20,Title = "Test4",new PopularTutorial { ID = 21,Title = "Test5",new PopularTutorial { ID = 22,Title = "Test6",new PopularTutorial { ID = 23,Title = "Test7",}; } private IEnumerable<Blog> GetAllBlogEntries() { return new[] { new Blog { ID = 1,Head = "Introduction to MVC",PostBy = "Lijo",Content = "This is a ..." },new Blog { ID = 2,Head = "jQuery Hidden Gems",new Blog { ID = 3,Head = "Webforms Intenals",Content = "This is a ..." } }; } } 查看(?/ Views / Articles / Index.cshtml): All Blogs List @Html.Action("blogs") Popular Tutorial @Html.Action("popular") 博客部分(?/ Views / Articles / Blogs.cshtml): @model IEnumerable<Blog> <section> <ul> @Html.DisplayForModel() </ul> </section> 博客显示模板(?/ Views / Articles / DisplayTemplates / Blog.cshtml): @model Blog <li> <h3>@Html.DisplayFor(x => x.Head)</h3> @Html.DisplayFor(x => x.Content) </li> 热门部分(?/ Views / Articles / Popular.cshtml): @model IEnumerable<PopularTutorial> @{ var grid = new WebGrid(Model,canPage: true,canSort: false,rowsPerPage: 3); } @grid.GetHtml( columns: grid.Columns( grid.Column("",format: @<text>@item.Title</text>) ) ) 结果: 更新: 根据评论部分的要求,我将尝试涵盖另外两个场景:
这非常简单.只需创建一个新的PopularBlogs控制器: public class PopularBlogsController : Controller { public ActionResult Popular() { return PartialView(GetPopularBlogs()); } private IEnumerable<PopularTutorial> GetPopularBlogs() { return new[] { new PopularTutorial { ID = 17,}; } } 然后将之前显示的?/ Views / Articles / Popular.cshtml部分移动到?/ Views / PopularBlogs / Popular.cshtml,最后更新?/ Views / Articles / Index.cshtml中的位置: All Blogs List @Html.Action("blogs") Popular Tutorial @Html.Action("popular","popularblogs")
在你的?/ Views / Articles / Index.cshtml视图中,用一个div替换用于呈现流行博客的Html.Action助手: All Blogs List @Html.Action("blogs") Popular Tutorial <div id="popular" data-url="@Url.Action("Popular","PopularBlogs")"></div> 然后修改?/ Views / PopularBlogs / Popular.cshtml以启用AJAX分页: @model IEnumerable<PopularTutorial> @{ var grid = new WebGrid( Model,rowsPerPage: 3,ajaxUpdateContainerId: "grid" ); } @grid.GetHtml( htmlAttributes: new { id = "grid" },columns: grid.Columns( grid.Column("",format: @<text>@item.Title</text>) ) ) 最后一步是将此partial的内容加载到相应的div中: $(function () { var popular = $('#popular'); popular.load(popular.data('url')); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 会话处理在asp.net
- asp.net-mvc-5 – 在禁用的TextBoxFor中只读是什么?
- asp.net-mvc – Telerik MVC网格大师详细级联下拉列表
- asp.net-mvc – 为什么DropDownListFor会在提交后丢失多个选
- asp.net-mvc – 使用相同的密钥从Request.Files获取所有文件
- IoC在ASP.NET Web API中的应用
- asp.net – 正则表达式匹配10-14位数
- asp.net-mvc-3 – 为什么会话状态超时会覆盖我的MVC3应用程
- asp.net-mvc – 用作复选框时bool值类型的必需属性
- asp.net – 如何防止用户多次投票?
- 具有多个身份验证过滤器的ASP.net Web API 2控制
- asp.net-mvc – 如何将asp.net mvc集成到Web站点
- asp.net – 为什么VS 2008 SP1不允许我编辑globa
- asp.net-mvc-3 – RedirectToAction在另一个控制
- ASP.NET和C#页面查看计数器:使用数据库
- asp.net – 结合WebResource.axd CSS请求
- asp.net-mvc – 使用没有主键的查找在dbSet中查找
- asp.net-mvc-4 – 在Asp.Net MVC 4应用程序中初始
- asp.net – AdBlock在.NET 4.5网站上阻止CSS和图
- asp.net-mvc – Sitecore MVC – 如何在页面上处