我正在尝试在着陆页中显示Youtube视频。我知道代码有效,因为在另一个视图中它可以工作。
在我的目标网页中,我引用了一个调用我的博客文章的模型,因此我无法在我的目标网页中引用其他模型
我得到的错误说当前模型不包含'GetEnumerator'。如果我添加另一个模型,我会收到一个错误,说视图只能引用一个模型。
这就是我使用“模特”和“视频”在着陆页中显示我的博文和视频的方式。
public ActionResult landing()
{
var model = new Stream.FeedViewModel();
var videos = WeLove.Net.Models.Stream.YouTubeHelper.GetVideos();
XmlReaderSettings settings = new XmlReaderSettings();
settings.XmlResolver = null;
settings.DtdProcessing = DtdProcessing.Ignore;
settings.DtdProcessing = DtdProcessing.Parse;
using (var reader = XmlReader.Create("https://takeonemisu.wordpress.com/feed",settings))
{
var feed = SyndicationFeed.Load(reader);
foreach (var post in feed.Items.Take(3))
{
model.Posts.Add(post);
}
}
return View(model);
}
我很遗憾,在视图中一次只能运行一个。
请帮忙
答案 0 :(得分:0)
使用子操作:
<强>控制器强>
[ChildActionOnly]
public ActionResult VideoList()
{
var videos = // get videos;
return PartialView(videos);
}
[ChildActionOnly]
确保此操作只能作为子项调用,而不能直接通过浏览器中的URL调用。如果你想在特定的URL上提供它,你总是可以删除这个属性,但是你很可能会将ControllerContext.IsChildAction
和/或Request.IsAjaxRequest
的布尔值分支为返回{ <1}}或PartialView
根据需要。
<强> VideoList.cshtml 强>
View
显然,部分视图HTML可以是您想要的任何内容。我只是将无序列表作为示例
发布视图
@model Namespace.To.VideoModel
<ul>
@foreach (var video in Model)
{
<li><a href="@video.Url">@video.Title</a></li>
}
</ul>