由于我安装了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-*
属性中的分辨率?我没有在发行说明中找到解释。
谢谢。
答案 0 :(得分:1)
这也发生在MVC4决赛中。有意义的是,这是设计用于避免您不希望为某些数据参数解析“〜”的情况。
简单的解决方法是再次将它们包装在@ Url.Content中,不是很好但是它可以工作。
<html data-root="@Url.Content("~/")">
PS。我检查了MVC4源代码。没有选项可以解析“data-”属性。 “data-”属性简称为文字。