asp.net mvc4 RC解析data- *属性中的url

时间:2012-06-04 10:18:20

标签: asp.net-mvc-4

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

在ASP.NET MVC4 beta中:

<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>

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

谢谢。

1 个答案:

答案 0 :(得分:1)

这也发生在MVC4决赛中。有意义的是,这是设计用于避免您不希望为某些数据参数解析“〜”的情况。

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

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

PS。我检查了MVC4源代码。没有选项可以解析“data-”属性。 “data-”属性简称为文字。