2016-11-10 8 views
0

私はASP.NET MVCを使用しています。前のページのAccount_Numberで検索されていないAjax Bound Kendo UIグリッドのAccount_Number列をHTMLリンクとして作成したいとします。 Account_Numberリンクをクリックすると、Account_NumberがCustomerコントローラメソッド 'QuickCheckSearch'に渡されます。
以下のコードはグリッドに表示されず、コントローラに値を呼び出したり渡したりしません。誰か次のコードを修正してください。ClientTemplateのハイパーリンクをIF条件付きで追加する方法 - Ajaxバインドされた剣道UI for ASP.NET MVC

ありがとうございました。

columns.Bound(p => p.Account_Number) 
.ClientTemplate("<#if (item.Account_Number == Model.AccountNumber){>Account_Number <# }" + "else{#><a href='" + Url.Action("QuickCheckSearch", "Customer") + "?Account_Number=#=Account_Number#'>#= Account_Number #</a> <# } #>") 
.Title("Account Number"); 

答えて

0
  1. 読むhttp://docs.telerik.com/kendo-ui/framework/templates/overview
  2. あなたはすべての場所の上にあまりにも多くの角括弧を持っています。テンプレートの実際のHTMLマークアップにはではなく、というテンプレート構文の一部としてそれらを置く必要があります。試してみてください:

    .ClientTemplate(
        "# if (Account_Number ==" + @Model.AccountNumber + "){ #" + 
         "#= Account_Number #" + 
        "# }" + 
        "else { #" + 
         "<a href = '" + Url.Action("QuickCheckSearch", "Customer") + "?Account_Number=#=Account_Number#'>#= Account_Number#</a>" + 
        "# } #" 
    ) 
    

私はそれは本当にあなたが視覚的に構造を見ることができるので、あなたの代わりに1本のライン上のすべての実際のコードを記述するのと同じように別々の行にそれをフォーマットするのに役立ちます見つけます。

あなたはまた、それをきれいかもしれこのように、行うことができます:

.ClientTemplate("#= accountLinkTemplate(data) #") 
.... 
<script> 
    function accountLinkTemplate(data) { 
     var template = data.Account_Number; 
     if (data.Account_Number == " + @Model.AccountNumber + ") { 
      template = "<a href = '" + "@Url.Action("QuickCheckSearch", "Customer")" + "?Account_Number=" + data.Account_Number+ "'>" + data.Account_Number+ "</a>"; 
     } 

     return template; 
    } 
</script> 
+0

...私はもちろんのライブプロジェクトではなく、私自身のViewModelとの最初のものを、再試験をダブルチェックのすべてを、そしてグリッドがレンダリングされ、URLが適切に形成されます。もう1つは、修正されたテンプレートを使用して回答を編集したところです。 –

+0

申し訳ありませんが、コメントにコードを貼り付けることができませんでした。 私は現在URLを取得していますが、Account_Numberの値はどちらの場合もコントローラメソッドに渡されていません。 – ranp

+0

"Account_Number ="でURLをフォーマットしているが、コントローラアクションが "AccountNumber"という名前のパラメータを受け入れているため、IDが取得されていません。サーバーパラメータの名前*は、URLで使用している名前と一致する必要があります。 –

関連する問題