2

由于我已经安装了 mvc4 RC,所以由应用程序根目录替换的 razor autoresolve url在 html 5属性~中不起作用。data-*IE:

在 ASP.NET MVC4 测试版中:

<table id="userTable" class="dataTable" data-table-source="~/api/user/Users">
    <tr>
        <td data-field="OperatorCode">
           @user.Code
        </td>
        <td>
            <a href="~/user/edit">edit</a>
        </td>
</table>

被转化为

<table id="userTable" class="dataTable" data-table-source="/api/user/Users">
    <tr>
        <td data-field="OperatorCode">
           operatorCode 1
        </td>
        <td>
            <a href="/user/edit">edit</a>
        </td>
</table>

但在 RC 中,它被转换为:

<table id="userTable" class="dataTable" data-table-source="~/api/user/Users">
    <tr>
        <td data-field="OperatorCode">
           operatorCode 1
        </td>
        <td>
            <a href="/user/edit">edit</a>
        </td>
</table>

正如您在此版本中看到的那样,~仍然存在。是设计使然吗?如果是,是否有任何配置参数需要更改以重新激活 html5data-*属性中的分辨率?我在发行说明中没有找到解释。

谢谢你。

4

1 回答 1

1

这也发生在 MVC4 final 中。这是有道理的,这是为了避免您不想为某些数据参数解析“~”的情况。

简单的解决方法是将它们再次包装在 @Url.Content 中,虽然不是很好,但它可以工作。

<html data-root="@Url.Content("~/")">

PS。我检查了 MVC4 源代码。没有启用解析“data-”属性的选项。“data-”属性被简单地视为文字。

于 2012-09-07T03:40:01.477 回答