0

私は Telerik Grid を使用するのは初めてですが、基本的にここで達成しようとしているのは次のシナリオです。いくつかのフィールドを持つフォームがあり、ajax を介してコントローラーで別のアクションを呼び出し、モデルを部分ビューに生成します。次のグリッドがあります。私の問題は、いくつかのビジネスロジックに応じていくつかのアクションを作成する必要があることです。列テンプレートを使用してそれを行うことができることはわかっています。インターネットで、js関数を使用してリンクを生成できることがわかりました。私の質問は、そのような面倒なことではありませんか? サーバーとクライアントで同じビジネスロジックを複製していますが、これを達成するためのより良い方法が必要ですか?

  Html.Telerik().Grid(Model)
      .Name("Grid")
      .DataBinding(binding => binding.Ajax().OperationMode(GridOperationMode.Client))
      .Columns(column =>
      {
          column.Bound(c => c.Id).Title("Id").Width(30);
          column.Bound(c => c.Status);
          column.Bound(c => c.DateReg);
          column.Template(
              @<text>
                   <div class="ActionsProvGrid">
                       <a href="@Url.Action("SomeAction", "Controller", new {id = item.id})">
                           <img src="../../Content/icons/ViewMore.png" alt="ViewMore" />
                       </a>
                       @if (@item.Status.Equals("ACT"))
                       {
                           <a href="@Url.Action("SomeOtherAction", "Controller", new {idOportunidad = item.id})">
                               <img src="../../Content/icons/invoice.png" alt="invoice"/>
                           </a>
                       }

                   </div>                                                      
               </text>
              ).ClientTemplate("<#= GenearteIcons(data)  #>");
      })
    .Sortable()
4

1 に答える 1

0

解決策として、ビジネス ロジックの結果をカプセル化するモデルのプロパティを定義できます。

public bool DoesStatusEqualToAct {
  get
  {
    return (code that determines if it's true);
  }
}

また、リンク html を生成する JavaScript 関数では、このプロパティにアクセスできます。

function GenerateIcons(data){
    var html = '';
    if(data.DoesStatusEqualToAct){
       html = 'version 1';
    }
    else{
       html = 'version 2';
    }
   return html;
}
于 2012-10-22T12:28:15.140 に答える