2012-09-04 100 views
1

我想在webgrid中使用一個錨標籤來調用一個javascript函數。我無法獲得正確的語法。這與我來的很接近:混合剃刀和JavaScript

gridSpecs.Column(header: "", columnName: "", format: (item) => @:<a href="javascript:void(0);" onclick="DoSomeWork(@item.EquipmentId);">x</a>), 

但是,VS IDE仍然抱怨缺少括號。我試着用<text></text>包裝錨標籤。我也嘗試過,沒有a:a:(上圖)。

我怎樣才能夠使用錨打電話給我的JavaScript的方法?

我甚至試過Html.ActionLink(),而是說對服務器的呼叫,我不想這樣做:

@Html.ActionLink("x", null, new { id = item.Id }, new { onlick = "DoSomeWork();" }) 

如果有幫助,這裏是整個的WebGrid HTML:

<div class="webgrid-wrapper"> 
    <div id="grid"> 
     @gridSpecs.GetHtml(
      tableStyle: "webgrid", 
      headerStyle: "webgrid-header", 
      footerStyle: "webgrid-footer", 
      alternatingRowStyle: "webgrid-alternating-rows", 
      columns: gridSpecs.Columns(
       gridSpecs.Column(header: "", columnName: "", format: (item) => @:<a href="javascript:void(0);" onclick="DoSomeWork(@item.EquipmentId);">x</a>), 
       gridSpecs.Column("Equipment.EquipmentId", "ID"), 
       gridSpecs.Column("Equipment.Name", "Name"), 
       gridSpecs.Column("Equipment.LegacyEquipmentId", "Legacy ID"))) 
    </div> 
</div> 

這是最後的工作線:

(希望這可以幫助挽救別人2小時...)

gridSpecs.Column(header: "", columnName: "", 
    format: (spec) => MvcHtmlString.Create(string.Format("<a href='' onclick='DoSomeWork({0}); return false;'>x</a>", spec.Equipment.EquipmentId))), 

回答

1

可疑行應該是:

gridSpecs.Column(header: "", columnName: "", format: (item) => string.Format("<a href=\"\" onclick=\"DoSomeWork({0}); return false;\">x</a>", item.EquipmentId)), 

你的方法沒有奏效,因爲該行是.NET代碼,並已經在剃刀環境。您只能使用@:<text>來突破剃刀上下文(即將該行的其餘部分寫入響應),這在這裏不合適。

對不起,修改你的邏輯,但我認爲最好的做法是使用string.Format進行字符串插值,並避免在屬性中使用javascript。

UPDATE V2(V1是沒有好:)

我沒有用的WebGrid,所以我並沒有意識到,它避開了HTML發送到format財產。你可以試試這個:

gridSpecs.Column(header: "", columnName: "", format: (item) => MvcHtmlString.Create(string.Format("<a href=\"\" onclick=\"DoSomeWork({0}); return false;\">x</a>", item.EquipmentId))), 
+0

謝謝,但這是我在網頁上看到的,當我嘗試:'x'。 (我實際上看到了頁面上的HTML。) –

+0

你能看到我的更新是否有幫助嗎? –

+0

我只是想更新,現在我得到這樣的:'無法轉換lambda表達式鍵入「對象」,因爲它不是一個委託type' –