我正在寻找外包一些页面内的帮助,我正在创建一个大型的web应用程序,并希望它真的很容易为这个内容添加到我们的页面,当我们准备好了。
所以我在想我可以创建一个系统,我可以添加文本文件到同一个文件夹中,一个动作期望它的视图是,并读出该文件的内容,该文件中的内容可以传递回视图显示。要么这样做,要么创建一个做同样事情的帮助器。
Controllers
HomeController.cs
Views
Home
Index.aspx
Index.txt
索引。aspx就可以访问Index.txt中的内容。
我该如何开始创建这个系统?在。net MVC中是否有我可以利用的内置类?
昨天问了一个类似的问题:包括静态html文件从~/Content到ASP。. NET MVC视图。
基本上你可以从文件中读取文本,并通过使用File.ReadAllText
将其包含在视图中,所以你会在你的索引中有这样的东西。aspx文件
<%= File.ReadAllText(Server.MapPath("~/Views/Home/index.txt")) %>
我会在Content文件夹中创建一个平行的层次结构,并将文件放在那里,可能是HTML。然后,您可以使用并行层次结构约定通过AJAX在视图中加载它们。
Content
Help
Home
index-help.html
about-help.html
Foo
index-help.html
bar-help.html
然后在你的视图
<div class="help">
<noscript>
<a href='@Url.Content( "~/content/help/home/index-help.html" )'>Click for Help</a>
</noscript>
</div>
<script type="text/javascript">
$(function() {
$('.help').load( '@Url.Content( "~/content/help/home/index-help.html" )' );
});
</script>
如果你的路由是一致的,你也可以从视图中的RouteData中提取控制器/动作,并把它移到_Layout中。CSHTML文件,路径由路由数据提供。
@{
var controller = ViewContext.RouteData["controller"] as string;
var action = ViewContext.RouteData["action"] as string;
var url = Url.Content( string.Format( "~/content/help/{0}/{1}-help.html", controller, action ) );
<div class="help">
<noscript>
<a href="@url>Click for Help</a>
</noscript>
</div>
<script type="text/javascript">
$(function() {
$('.help').load( "@url" );
});
</script>
}
一种可能的解决方案是将它们存储为xml文件,从视图期望的模型序列化。然后,您可以创建一个Action Filter,用XML文件中的数据填充返回的模型。我希望这对你有帮助。