2016-02-09 61 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