0

我正在考虑在我正在创建的大型 Web 应用程序上外包一些页面内帮助,并希望在我们准备好时能够很容易地将这些内容添加到我们的页面中。

所以我想我可以创建一个系统,我可以在其中将文本文件添加到操作期望其视图所在的同一文件夹中,并读出该文件的内容,该文件中的内容可以传递回视图以显示。要么这样做,要么创建一个可以做同样事情的助手。

例子

Controllers
   HomeController.cs

Views
   Home
      Index.aspx
      Index.txt

然后 Index.aspx 将有权访问 Index.txt 中的内容。

我将如何开始创建这个系统。.NET MVC 中是否有我可以利用的内置类?

4

3 回答 3

3

昨天问了一个类似的问题:Include static html file from ~/Content into ASP.NET MVC view

基本上,您可以从文件中读取文本并将其包含在您的视图中,File.ReadAllText这样您的 index.aspx 文件中就会有类似的内容

<%= File.ReadAllText(Server.MapPath("~/Views/Home/index.txt")) %>
于 2011-04-06T08:12:00.900 回答
1

我会在 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>
  }
于 2011-04-06T00:15:12.023 回答
0

一种可能的解决方案是将它们存储为 xml 文件,而不是从视图期望的模型中序列化。然后,您可以创建一个操作过滤器,使用 XML 文件中的数据填充正在返回的模型。我希望这会有所帮助。

于 2011-04-06T00:05:43.787 回答