使用剃刀语法和角度

时间:2016-02-09 09:04:40

标签: angularjs asp.net-mvc razor

是否可以像这样在Razor语法中使用AngularJS变量作为路径参数?

<tr data-ng-repeat="job in jobs">
    <td>
        <a href="@Url.RouteUrl("editJob", new { id =  job.JobID })">
            <i class="glyphicon glyphicon-edit" style="color:#808080"></i>
        </a>
    </td>
</tr>

现在我正在使用它。

<a href='@Url.Content("~/job/edit/"){{job.JobId}}'>

2 个答案:

答案 0 :(得分:4)

我会说不,因为Razor是渲染服务器端的,那时Angular变量不存在。含义new { id = job.jobID }将导致{ id : null }

你的第二个解决方案正在运行,因为角度字符串在Razor部分结束后立即连接。

答案 1 :(得分:1)

我推荐两种解决方案,因为混合多个模板总是有点危险。我们团队解决这个问题的方式是

  1. 在一个单独的脚本块中传递所有razor依赖项,并在ng-init中使用动态创建的常量(如果仅在简单情况下使用)
  2. 仅在角度模板中使用这些
  3. 有点像这样(伪代码,使用ng-init的例子)

    <div ng-app="..." ng-init="config = { rootUrl: '@Url.Content("~/job/edit/")', otherValue: ''}">
    
      <a href="{{config.rootUrl + job.JobId}}">...</a>
    </div>