0

在我的 C# Web 应用程序的 html 代码中,我将 resx 引用为:

ul class="inlineList" li fmt:message key="scrollabletable.footer" / span data-bind="text: firstDisplayedRowNumber() + '-' + lastDisplayedRowNumber()" /span fmt:message key="scrollabletable.pager" /span data-bind="text: itemCount">

resx代码:

<data name="scrollabletable.footer" xml:space="preserve">
    <value> Showing </value>
</data>

<data name="scrollabletable.pager" xml:space="preserve">
    <value> of </value>
</data>

当我通过 ASP.NET VS Server 查看网站时,我可以看到来自 resx 的字符串。但是当我使用 IIS express 时,那些(“显示”,“的”)不会被显示。

知道为什么吗?

4

1 回答 1

0

关于您对帖子的最后评论:

看起来您正在对元素fmt的属性使用命名空间。li假设您有以下内容:

<!DOCTYPE html>
<html>
<head>
    <!-- some stuff here -->
</head>
<body>
    <!-- some stuff here -->
    <ul class="inlineList">
        <li fmt:message key="scrollabletable.footer" />
        <span data-bind="text: firstDisplayedRowNumber() + '-' + lastDisplayedRowNumber()" />
    <span fmt:message key="scrollabletable.pager" />
    <span data-bind="text: itemCount"> 
    <!-- other stuff below -->

问题不在于您的 RESX。它与属性上的fmt名称空间有关。是 HTML 中无法识别的命名空间,因为 HTML 没有命名空间的概念。另一方面,XHTML 具有名称空间的概念。使用 XHTML 时,也没有什么可以阻止您声明其他名称空间。我建议尝试以下方法:messagefmt

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fmt="urn:fmt-namespace-here" xml:lang="en">
<head>
    <!-- some stuff here -->
</head>
<body>
    <!-- some stuff here -->
    <ul class="inlineList">
        <li fmt:message key="scrollabletable.footer" />
        <!-- NOTE: Instead of specifying the namespace in the html element, you could
                   also do the following:
        <li fmt:message key="scrollabletable.footer" xmlns:fmt="urn:fmt-namespace-here" />
        -->
        <span data-bind="text: firstDisplayedRowNumber() + '-' + lastDisplayedRowNumber()" />
    <span fmt:message key="scrollabletable.pager" />
    <span data-bind="text: itemCount"> 
    <!-- other stuff below -->

在上面的示例中,您已经声明了名称空间fmt,现在文档处理器将知道并识别它。

注意:由于您在 OP 中的示例 HTML 之前没有包含空格,因此我不得不猜测您写的所有内容<>消失了,并且可能还有这些字符后面的其他内容。

HTH。

于 2013-05-23T17:16:42.550 回答