如何从.NET网站的整个输出中替换一些字符串?

时间:2012-06-19 08:11:07

标签: c# asp.net .net

我使用带有.NET的webforms / masterpage。

我的页面中有很多Web用户控件。

我是否可以在某些“字符串”中进行替换?

就像,如果.NET生成:

<div>Hello my Name is Marco</div>

将其更改为:

<div>Hi, my Name is Luca</div>

有可能吗?或者我每次获取这些数据时都需要创建我的特定实用程序(来自数据库)并且我做了一个response.write?

4 个答案:

答案 0 :(得分:2)

ASP.Net WebForms方法是使用标签控件并在后面的代码中设置名称。

所以你的aspx文件将包含

<div>Hello my Name is <asp:Label id="NameLabel" runat="server"/></div>

你的代码是隐藏文件,即aspx.cs将包含

NameLabel.Text = "Luca"

如果你想要实现一些脏东西,可以使用过滤器来修改HTTP响应。本文将更详细地解释。 http://www.4guysfromrolla.com/articles/120308-1.aspx但我不建议使用此功能。

答案 1 :(得分:1)

您应该能够撰写IHttpModule并将其与PreSendRequestContent事件联系起来,并在此处进行替换。看看这里提出的解决方案:http://www.tek-tips.com/viewthread.cfm?qid=1149673

答案 2 :(得分:0)

使用这种技术,您可以在不重新编译的情况下,将显示给用户的消息更改为保持数据,逻辑和ui问题分开。它并不“简单”,但很干净。

免责声明:不是使用IDE编写的

网络表单

<div><asp:Literal id="litHelloMessage" runat="server" text="<%=GetHelloMessage() %>" />
<asp:Literal id="litName" runat="server" text="<%=User.Name %>"/>

代码背后

public class MyPage : Page
{
   public User User { get; set; }

   public void Page_Load()
   {
      // logic to fetch the user from your persistence store
      // e.g. User = MyUserRepo.Fetch(uid);

      // Important
      DataBind();
   }

   public string GetHelloMessage()
   {
        // this is straight forward, alternatively you could have  some logic here to 
        // derive which which message is shown to the user
        litHelloMessage = GetLocalResourceObject(User.MessageResourceKey).ToString();
   }
}

资源文件(App_LocalResources / mypage.resx)

Key                  Value    
"HelloMessage"       "Hello my Name is" 
"HiMessage"          "Hi, my Name is" 

用户类

public class User
{
    public string Name { get; set; }

    public string MessageResourceKey { get; set; }
}

示例数据

Name         MessageResourceKey 
"Marco"      "HelloMessage"
"Luca"       "HiMessage"

答案 3 :(得分:-2)

您需要的是模板引擎。 这是维基百科的一个良好开端 http://en.wikipedia.org/wiki/Template_engine_(web)

或其他人指出的MVC概念的View部分。

实现模板引擎的方法有很多,还有更多可以使用的方法。