【问题标题】:using Url.Content to display the file content with .net mvc使用 Url.Content 通过 .net mvc 显示文件内容
【发布时间】:2009-12-12 09:46:10
【问题描述】:

在我的 .net mvc 应用程序中,我需要将本地文件中的内容动态插入到视图页面中。这样不同文件的内容可以以相同的样式显示。所以我创建了一个名为 StaticController 的控制器和一个名为 General 的动作。以下是我的代码:

public class StaticController : Controller
{
    public virtual ViewResult General(string filePath)
    {
        return View((object)filePath);
    }
}

在我看来,我尝试使用 filePath 显示文件的内容。

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Tab.Master"          Inherits="System.Web.Mvc.ViewPage<string>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <%if(string.IsNullOrEmpty(Model)){ %>
         Sorry, page is under construction!
    <% return;} %>
    <%=Url.Content(Model)%> 

</asp:Content>

然后我用http://localhost:4789/Static/General?filePath="~/staticfiles/1.txt" 测试了视图,然后我希望显示1.txt 的内容。但我得到的只是屏幕上一个不错的“~/staticfiles/1.txt”。

我做错了吗?我曾经以这种方式显示图片。我猜对于纯文本,Url.Content 不再起作用了?

【问题讨论】:

    标签: .net asp.net-mvc


    【解决方案1】:

    首先是一两条评论,不知道为什么您将常规操作标记为虚拟,其次, 将返回表达式的文本。在你的情况下,你传入的路径,所以一切都按照你写的那样工作。

    其次,我认为您最好按照以下方式扩展您的操作:

    public virtual ViewResult General(string filePath)
    {
        StreamReader sr = File.OpenText(Server.MapPath(filePath));
        return View(sr.ReadToEnd());
    }
    

    您可以将读取的文件移动到视图本身,但视图应该是哑的,只显示给定的内容。

    【讨论】:

    • 回答您的问题。 “虚拟”是由 T4MVC 自动添加的。它需要重写 action 方法来执行它的魔法。 :)。我会按照你的建议去做,看看结果如何。
    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 2019-02-20
    • 1970-01-01
    相关资源
    最近更新 更多