1

単純な userName 文字列をパラメーターとしてコントローラーを呼び出す条件付きクライアント テンプレートを Kendo Grid で動作させようとしていますが、これを正しく動作させるための構文がわかりません。

私のテンプレートは次のように表示されます。

        columns.Bound(user => user.IsLockedOut).ClientTemplate(
                "# if (IsLockedOut == true) { #" +

                    "<input type='button' value='Unlock Acc' onclick='location.href=" + @Url.Action("UnlockAccount", "Administration", new { userName = "#= UserName #" + }) + "/>" +

                "# } else { #" +
                    "Unlocked" +
                "# } #"
            );

コントローラーのアクション メソッドは次のようになります。

    public void UnlockAccount(string userName)
    {
    }

現時点で生成されるエラーは次のとおりです。

CS1525: 無効な式の用語 '}'

私はこれを数時間見てきましたが、今は木に木が見えません。

4

3 に答える 3

1

実際には必要のない「+」プラス記号があります。また、ヘルパーの前に「アット」記号 @ は必要ありません。

 new { userName = "#= UserName #" + }) //<- that last plus
于 2013-02-19T19:40:56.457 に答える
1

この方法は私にとってはうまくいきました。

const string ShowUpdateButton = "#if (IsNetReversal == false) {#<a class='k-button k-button-icontext k-grid-edit' href='\\#'><span class='k-icon k-edit'></span>Update</a>#}#";
const string ShowReverseButton = "#if (IsNetReversal == false) {#<a class='k-button k-button-icontext k-grid-reverse' href='/JournalDetail/Reverse/#: ID #'  ><span class='k-icon k-reverse'></span>Reverse</a>#}#";
const string ShowDeleteButton = "#if (IsAdjustment == true) {#<a class='k-button k-button-icontext k-grid-delete' href='\\#'><span class='k-icon k-delete'></span>Delete</a>#}#";

テンプレートをインラインで実行できますが、定数を宣言してから string.format を使用してそれらを連結すると、(特に複数のボタンの場合) 簡単になります。

col.Template(o => o).ClientTemplate(string.Format("{0}{1}{2}", ShowUpdateButton, ShowDeleteButton, ShowReverseButton));

利点は、ユーザーが編集をキャンセルしたときに jquery ハックが条件付きステータスを無視するのに対し、ポップアップ エディターで動作することです。ポップアップ エディターからキャンセルすると、viewmodel から、または Kendo がそれを保存する場所からグリッド行が復元され、jquery/javascript ハックの前のボタン状態になります。上記の方法では、クライアント テンプレートの HTML 出力をコピーしたため、標準コマンドも自動配線されます。

欠点は、Kendo がコマンド ボタンのパターンを変更すると、クライアント テンプレートが失敗する可能性があることです。この方法以外にもいくつかの方法に飽きましたが、この方法の欠点は他の方法よりも優れているようです。

剣道フォーラムに関する注意: この投稿の日付の時点で、サポートにお金を払っていない人がフォーラムに投稿することを許可していないように見えるので、代わりにここに質問を投稿することをお勧めします. 彼らはスタックオーバーフローを監視しており、私の経験では、ここでより迅速に質問に答えているようです.

于 2014-01-09T22:05:01.990 に答える
0

私はもう少し先を行く必要がありますが、次のように手動で URL を書くことによってのみ:

"<input type='button' value='Unlock Acc' onclick='location.href=/Administration/TryUnlockAccount?userName=#= UserName #'/>"

ただし、コントローラーメソッドはまだ呼び出されませんが、正しいパラメーター値があります...

于 2013-02-20T10:34:30.397 に答える