在资源文件中处理服务器端代码和html的混合?
我在尝试将ASP.NET Web应用程序转换为使用资源文件。我之前没有使用资源文件,所以我只是在和他们一起玩,并且想知道这是否可能。在资源文件中处理服务器端代码和html的混合?
我有一条消息,当搜索结果没有找到时会返回搜索结果,提示用户返回主页。很多这些网页上的方法来确定什么是正确的页面发送用户,所以有与标记类似这样的很多路段:
抱歉,我们无法找到符合搜索条件的项目 标准。
请调整您的搜索条件或
<a href="<%= SomeMethodToDetermineUri() %>">
返回 至(SomePage)</a>
。
所以基本上,某种类型的消息,后面跟着一个链接或一个链接列表。获取消息部分工作正常,它是服务器端代码来生成问题的链接。
什么是将其放入资源文件的最佳方法是什么?它能够很好地识别html链接部分,但服务器端代码被插入为纯文本。
将其分解为2个资源的唯一方法是? (这似乎凌乱)
<%= Resources.Master.NoSearchResultsFound %>
<a href="<%= SomeMethodToDetermineUri() %>">
<%= Resources.Master.NoSearchResultsFoundReturnLinkText %>
</a>.
或者有没有办法让页面评估服务器代码?
呸,我忘了我的老朋友String.Format
<%= String.Format(Resources.Master.NoSearchResultsFound, SomeMethodToDetermineUri() %>
工作完全正常。
然后在资源文件中的值只是
抱歉,我们无法找到符合搜索条件的内容。
请调整您的搜索条件或
<a href="{0}">return to (SomePage)</a>
。
如果您的网站上有类似的功能,我建议使用用户控制或母版页来处理您正在尝试执行的操作。我相信资源更适用于项目之外的文件。
您不想将任何类型的代码放入资源文件中。即使你觉得它很混乱,你的解决方案是正确的。
您可以做的唯一的其他事情就是将其封装在用户控件中。用户控件将获取资源并因此隐藏页面上的混乱。
+1,usercontrol会工作,问题是这是一个非常大的Web应用程序。不得不为每个部分制作一个用户控件并不好玩。 :P – Brandon 2010-03-30 19:41:34
@Brandon:假装你写了所有这些控件。现在,他们之间有什么区别?例如,是否可以将某些差异分解为属性?也许给用户控件一个属性标签资源的名称和一个资源在''标签中使用。那么你只有一个控制。 – 2010-03-30 19:44:13
你是对的,重构它会大大减少用户控件的数量,但我留下的仍然是一个很大的数字。从长远来看,使用String.Format可能是最容易的事情。 – Brandon 2010-03-30 19:49:55
功能和消息不完全相同,这是一个例子。当我说他们是相似的,我的意思是在整个项目中使用(一些文本)块(一些服务器端代码来生成链接)(更多文本)。这是服务器端代码的一部分,这是一个在路上的冲击,以定制消息给用户。对不起,我已经更新了这个问题。 – Brandon 2010-03-30 19:19:43
我想我很困惑。为什么不直接使用asp:Literal标签并在App_Code中创建一个可以为您完成所有工作的类? – 2010-03-30 19:25:35
现在好了,我很困惑:P如何使用文字控件帮助我?我仍然将两种资源和一种方法混合在一起来生成url,我只是在不同的地方做这件事。 – Brandon 2010-03-30 19:34:55