我想知道是否有一种简单的方法来实现以下内容:
假设我有一个博客,我想要查看过去X篇文章的主视图。
对于这些条目中的每一个,我都有一个小模板,包括标题、作者姓名、头像和正文。
这很简单,我可以为博客条目制作模板,但如果我想通过将另一个部分视图注入到我放置正文的位置来使用此模板以达到多个目的,有没有一种简单的方法在MVC3中实现这一点?如果这很简单,请原谅我,我可能错过了某个搜索术语:)
以下是一个示例:
每个“条目”的模板:
任何指导都将不胜感激。
谢谢!
编辑:2012年02月12日
正如我在接受的答案的评论中所指出的,我意识到我真正想要采用MVVM方法,尽管该框架的名称可能在某些情况下是完全可行的想法。
我正在阅读Anoop的博客文章,这篇文章让我想到了这个问题,我想添加一个有趣的替代方案,特别是在您使用ASP.NET MVC 3框架采用MVVM方法的情况下可能非常有用:
请注意,他在此帖子中使用以下模板:KsigDo Task Pad – Real-Time UI View Model syncing across users with ASP.NET, SignalR, Knockout MVVM and EF。
假设我有一个博客,我想要查看过去X篇文章的主视图。
对于这些条目中的每一个,我都有一个小模板,包括标题、作者姓名、头像和正文。
这很简单,我可以为博客条目制作模板,但如果我想通过将另一个部分视图注入到我放置正文的位置来使用此模板以达到多个目的,有没有一种简单的方法在MVC3中实现这一点?如果这很简单,请原谅我,我可能错过了某个搜索术语:)
以下是一个示例:
每个“条目”的模板:
@{
ViewBag.Title = "_Entry";
}
<link rel="stylesheet" href="@Url.Content("~/css/post.css")" />
<section id="content" class="body">
<hgroup>
<ol id="posts-list" class="feed">
<li>
<article class="entry">
<header>
<h2 class="entry-title">
<a href="#" rel="bookmark" title="Permalink to this POST TITLE">
</a>
</h2>
</header>
<footer class="post-info">
<abbr class="published" title="2005-10-10T14:07:00-07:00">
<!-- YYYYMMDDThh:mm:ss+ZZZZ -->
</abbr>
<address class="vcard author">
<a class="url fn" href="#">
</a>
</address>
</footer>
</article>
</li>
<li>
<article class="entry">
<footer class="post-info">
<address class="vcard author">
<img src=""></img>
</address>
</footer>
<!-- /.post-info -->
<div class="entry-content">
<p>
</p>
</div>
<!-- /.entry-content -->
</article>
</li>
</ol>
</hgroup>
<!-- /#posts-list -->
</section>
以下是一个示例,展示了如何在不同的上下文中使用它(除此之外,这代表了所需的最终表达式...我想知道是否有一种方法可以将Entry作为视图,并动态地将部分视图注入其中(在下面的示例中,“注入”将用于登录视图):
@model MyTemplate.Models.LogOnModel
@{
Page.Title = "Log On";
}
@section HeadContent
{
<link rel="stylesheet" href="@Url.Content("~/css/openid.css")" />
<link rel="stylesheet" href="@Url.Content("~/css/post.css")" />
}
@section ScriptSection
{
<script type="text/javascript" src="@Url.Content("~/js/libs/openid-jquery.js")"></script>
<script type="text/javascript">
$(document).ready(function () {
openid.init('openid_identifier');
});
</script>
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8.1/jquery.validate.min.js" type="text/javascript"></script>
}
<section id="content" class="body">
<hgroup>
<ul id="posts-list" class="feed">
<li>
<article class="entry">
<header>
<h2 class="entry-title">
<a href="#" rel="bookmark" title="Permalink to this POST TITLE">
Account Login
</a>
</h2>
<p>
>>
</br>
Please enter your username and password.
<br />
<br />
@Html.ActionLink("Register", "Register") if you don't have an account.
</p>
</header>
</article>
</li>
<li>
<article class="entry">
<footer class="post-info">
<address class="vcard author">
<img src="../img/Hive.png" alt="units" id="gravatar" width="175" height="175" class="imageBorderRadius"></img>
</address>
</footer>
<!-- /.post-info -->
<div class="entry-content">
@Html.ValidationSummary(true)
@using (Html.BeginForm()) {
<div>
<fieldset>
<legend>Account Information</legend>
<div class="editor-label">
@Html.LabelFor(m => m.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<div class="editor-label">
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe)
</div>
<p>
<input type="submit" value="Log On" />
</p>
</fieldset>
</div>
}
</div>
<!-- /.entry-content -->
</article>
</li>
</ul>
</hgroup>
<!-- /#posts-list -->
</section>
@Html.Partial("_OpenId")
任何指导都将不胜感激。
谢谢!
编辑:2012年02月12日
正如我在接受的答案的评论中所指出的,我意识到我真正想要采用MVVM方法,尽管该框架的名称可能在某些情况下是完全可行的想法。
我正在阅读Anoop的博客文章,这篇文章让我想到了这个问题,我想添加一个有趣的替代方案,特别是在您使用ASP.NET MVC 3框架采用MVVM方法的情况下可能非常有用:
请注意,他在此帖子中使用以下模板:KsigDo Task Pad – Real-Time UI View Model syncing across users with ASP.NET, SignalR, Knockout MVVM and EF。
<script type="text/html" id="taskTemplate"></script>