2016-02-09 60 views
2

是否有可能在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}}'> 
+0

是它的工作对你这个(使用NG-初始化伪代码,例如)一点? –

+0

第一个不工作,第二个工作。第一个是更清洁 – naveen

+0

然后使用。如果工作正常。正如它理解的字符串查找替换在后端工作的第二个条件。 –

回答

4

我会说不,因为Razor是呈现服务器端,在那个时候角度变量不存在。含义new { id = job.jobID }将导致{ id : null }

您的第二个解决方案正在工作,因为角度字符串在剃刀部分结束后立即连接起来。

1

我不推荐任何解决方案,因为混合多个模板总是有点危险。我们的团队解决了这一问题的方法是

  1. 传中的所有剃刀依赖于一个单独的脚本块动态创建上的NG-INIT不变(如果仅仅是简单的情况下使用)
  2. 中只能使用这些你的角模板

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

    <a href="{{config.rootUrl + job.JobId}}">...</a> 
</div> 
+0

是的。问题是我想一起使用angular和asp.net路由。 – naveen

+0

@naveen这可以像这样做得相当好。我假设你想要使用html5 pushstate进行角度转换,但是使用asp.net路由将相同的url映射到服务器,对吗? 所以我理解你的核心问题是“你可以使用_same_ url-config来组装链接网址在剃刀/角度” - 会打吗? – iJungleBoy