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",PostBy="Lijo", Content="This is a ..."},
new Blog {ID=3,Head="Webforms Intenals",PostBy="Lijo", Content="This is a ..."}
};
return articleSummaryList;
}
}
}
阅读:
http://www.mikesdotnetting.com/Article/154/Looking-At-The-WebMatrix-WebGrid
@Html.Partial( ) 与 @Html.Action() - MVC Razor http://pratapreddypilaka.blogspot.in/2011/ 11/htmlpartial-vs-htmlaction-mvc-razor.html
I have two entities – PopularTutorial and Blog. This data need to be displayed in homepage view as listed below. The key point is that the “PopularTutorial” should be reused in other views and Bloglist also may be reused in other views. There is a manual paging option in the “PopularTutorial” section. When page 1 is clicked, first 3 popular tutorials will be listed . When page 2 is clicked tutorials 4 to 6 will be listed.
I know “partial view” is the way to go. When I searched I came across methods that involve jQuery and JSON. I am wondering whether this can be done (in RAZOR) without explicit use of jQuery and JSON.
Could you please help me for this in RAOZR?
To be honest – I am doing this as a step before learning AJAX in MVC. So my next attempt will be to ajaxify it. It would be great if you can provide an answer that will work in ajax way also.
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",PostBy="Lijo", Content="This is a ..."},
new Blog {ID=3,Head="Webforms Intenals",PostBy="Lijo", Content="This is a ..."}
};
return articleSummaryList;
}
}
}
READING:
http://www.mikesdotnetting.com/Article/154/Looking-At-The-WebMatrix-WebGrid
@Html.Partial() Vs @Html.Action() - MVC Razor
http://pratapreddypilaka.blogspot.in/2011/11/htmlpartial-vs-htmlaction-mvc-razor.htmlHow do I specify different Layouts in the ASP.NET MVC 3 razor ViewStart file?
Asp.net MVC - Returning to "host" controller when using partial views
When do I use View Models, Partials, Templates and handle child bindings with MVC 3
Using data in a HTML.ActionLink inside a WebGrid.column, not possible?
How can I hide a WebGrid column based on the current user's role?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
下面是一个可能帮助您入门的示例:
模型:
控制器:
视图 (
~/Views/Articles/Index.cshtml
):博客部分 (
~/Views/Articles/Blogs.cshtml
) code>):博客展示模板 (
~/Views/Articles/DisplayTemplates/Blog.cshtml
):热门部分(
~/Views/Articles/Popular.cshtml
):结果:
更新:
根据评论部分的要求,我将尝试涵盖另外 2 个场景:
这非常简单。只需创建一个新的
PopularBlogs
控制器:然后将之前显示的
~/Views/Articles/Popular.cshtml
部分移动到~/Views/PopularBlogs/Popular.cshtml
最后更新~/Views/Articles/Index.cshtml
中的位置:在您的
~/Views/Articles/Index.cshtml
视图中,将渲染流行博客的Html.Action
帮助器替换为>div
:然后修改
~/Views/PopularBlogs/Popular.cshtml
以启用AJAX分页:最后一步是加载此部分的内容进入相应的div:
Here's an example that might get you started:
Models:
Controller:
View (
~/Views/Articles/Index.cshtml
):Blogs Partial (
~/Views/Articles/Blogs.cshtml
):Blog display template (
~/Views/Articles/DisplayTemplates/Blog.cshtml
):Popular Partial (
~/Views/Articles/Popular.cshtml
):Result:
UPDATE:
As requested in the comments section I will try to cover the 2 additional scenarios:
That's pretty straightforward. Just create a new
PopularBlogs
controller:and then move the
~/Views/Articles/Popular.cshtml
partial shown previously to~/Views/PopularBlogs/Popular.cshtml
and finally update the location in your~/Views/Articles/Index.cshtml
:In your
~/Views/Articles/Index.cshtml
view replace theHtml.Action
helper that renders the popular blogs with adiv
:and then modify
~/Views/PopularBlogs/Popular.cshtml
to enable AJAX pagination:And the final step is to load the contents of this partial into the corresponding div: