1

webgrid内でアンカータグを使用してjavascript関数を呼び出そうとしています。構文が正しくわかりません。これは私が来たのと同じくらい近いです:

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

ただし、VSIDEはまだ括弧がないことについて不平を言っています。アンカータグをでラップしてみました<text></text>a:また、a:(上記)を使用せずに使用してみました。

アンカーを使用してjavascriptメソッドを呼び出すにはどうすればよいですか?

Html.ActionLink()を試したこともありますが、サーバーが呼び出されるので、それを実行したくありません。

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

それが役立つ場合は、ここにWebgridHTML全体があります。

<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))),
4

1 に答える 1

1

行が次のようになっていると思われます。

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

行が.netコードであり、すでにかみそりのコンテキストにあるため、あなたのアプローチは機能しませんでした。@:or<text>は、Razor コンテキストから抜け出す (つまり、行の残りを応答に書き出す) ためだけに使用しますが、これはここでは適切ではありません。

ロジックをいじって申し訳ありませんがstring.Format、文字列補間に使用し、属性での JavaScript の使用を避けることをお勧めしhrefます。

UPDATE v2 (v1 はダメでした :)

私は WebGrid を使用したことがないので、formatプロパティに送信された HTML をエスケープしていることに気付きませんでした。これを試すことができますか:

gridSpecs.Column(header: "", columnName: "", format: (item) => MvcHtmlString.Create(string.Format("<a href=\"\" onclick=\"DoSomeWork({0}); return false;\">x</a>", item.EquipmentId))),
于 2012-09-04T17:08:59.660 に答える