在我的应用程序中,我有段落与混合静态文本和HTML格式和链接.我正在寻找一个良好的本地化解决方案,以保持资源与标记分离.假设我们有以下段落:
<p>Let's have a <a href="someURL">cup of coffee</a> and get <b>energized</b>.</p>
Run Code Online (Sandbox Code Playgroud)
使用标准的resx解决方案迫使我在resx字符串中嵌入HTML标记和链接目标.这很糟糕,因为它将标记/ CSS/app结构与资源结合在一起.
下一个最好的事情是拆分段落,使本地化内容永远不会包含标记.在上面的例子中,我将有4个段片段:1)"让我们有一个"作为纯文本2)"杯咖啡"作为链接3)"并得到"作为纯文本4)"充满活力"作为粗体文本
这个解决方案的问题在于,碎片使得资源维护成为一个完整的噩梦,而且它会强制段落片段的某个顺序,这可能不符合所有文化的语法.例如,在翻译的语言中,正确的翻译可能是
<p>Let's get <b>energized</b> with a <a href="someURL">cup of coffee</a>.</p>
Run Code Online (Sandbox Code Playgroud)
我不认为我可以完全没有将标记嵌入资源中,这可能不是什么大不了的事.使用适当的标记/ CSS(span,div,id,class),我可以创建可以减少耦合影响的抽象.
我怎么处理链接URL?谢谢,
斯特凡
我有一个搜索结果页面,我输出一个使用MVC Razor视图以特定方式格式化的项目列表.
@for (int i = 0; i < group.Count(); i++) {
<div class="result">
<div class="ordinal">@((i+1).ToString()).</div>
<div class="detail"><p>@group.ElementAt(i).Name</p></div>
</div>
}
Run Code Online (Sandbox Code Playgroud)
客户端可以进一步筛选使用jQuery AJAX以检索新的数据集作为JSON和jQuery模板来呈现结果集代替原来的那些结果.这是jQuery模板:
<script id="resultTemplate" type="text/x-jquery-tmpl">
{{each(i, result) results}}
<div class="result">
<div class="ordinal">${i+1}.</div>
<div class="detail"><p>${name}</p></div>
</div>
{{/each}}
</script>
Run Code Online (Sandbox Code Playgroud)
在AJAX调用之后绑定:
var result = $("#resultTemplate").tmpl({ results: data });
$("#resultsColumn").empty().append(result);
Run Code Online (Sandbox Code Playgroud)
请注意我必须在服务器端Razor代码和客户端jQuery代码中复制搜索结果的HTML格式.我想只有一个版本的数据绑定模板,以减少我必须进行更改时不匹配的可能性.
阅读Stephen Walter的jQuery模板简介他在使用ASP.NET MVC的jQuery模板时暗示"更好地在一起"集成,所以我想知道是否有解决上述场景的工具.
谢谢.