asp.net MVC - 使用 MVC 的约定方法为我的操作提供静态内容



我正在寻找外包一些页面内的帮助,我正在创建一个大型的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文件中的数据填充返回的模型。我希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新