2012-03-20 5 views
0

私はコントローラ内でMVC3 WebGridを使用しています。そのイメージをクリックすると、コントローラ内のアクションにデータが渡されるような、イメージをカラムに入れる必要があります。これはAjax、つまり、画像をクリックしてもポストバックは発生しないはずです。コントローラのAjaxコールである必要があります。オブジェクト(モデル)、文字列、intなどを渡したいと思います。コントローラ内のWebGridでクリック可能なイメージ(Ajax経由)?

public ActionResult AddInGrid(AjaxModel m) 
     { 
      if (Session["ajaxmodel"] == null) 
      { 
       Session.Add("ajaxmodel", a.am); 
      } 
      List<AjaxModel> list = (List<AjaxModel>)Session["ajaxmodel"]; 
      list.Insert(0, m); 
      Session.Add("ajaxmodel", list); 
      WebGrid g = new WebGrid(list); 
      IHtmlString s = g.GetHtml(); 
      string s1 = s.ToString(); 
      return Json(new { text = s1 }); 
     } 

GetHtml()メソッドの中に入れるべきものは何ですか? 編集:私はHTMLがAjax.ActionLinkにレンダリングするものを発見し、限り

WebGrid g = new WebGrid(list); 
    string link = string.Format(@"<a data-ajax='true' data-ajax-method='GET' data-ajax-mode='replace' href='/Home/Delete/{0}' />Delete</a>",item.fname); 
IHtmlString s = g.GetHtml(g.Columns(g.Column(format:link))); 

答えて

0
@grid.GetHtml(
    columns: grid.Columns(
     grid.Column(
      columnName: "", 
      format: 
       @<text> 
        @Ajax.ActionLink(
         "Delete", 
         "delete", 
         "home", 
         new AjaxOptions { 
          UpdateTargetId = "sometargetdiv", 
          InsertionMode = InsertionMode.Replace 
         } 
        ) 
       </text> 
     ) 
    ) 
) 

ことを組み込むために試してみた :ここで私はこれまで試したものだし、それが動作していませんアクションにモデル全体が関係している渡し、よく、あなたはrouteValuesパラメータを使用して、クエリ文字列パラメータとして異なる特性を渡すことができます。

@Ajax.ActionLink(
    "Delete", 
    "delete", 
    "home", 
    new { 
     fname = item.fname, 
     lname = item.lname 
     .... and so on for each property you want to fetch back 
    }, 
    new AjaxOptions { 
     UpdateTargetId = "sometargetdiv", 
     InsertionMode = InsertionMode.Replace 
    } 
) 
+0

これは、ビュー内で動作しますが、私はController.It内でそれを必要と働いていませんそこには何が必要ですか? –

+0

コントローラー?最初にコントローラの中でHTMLを生成するのはなぜですか?これはコントローラーが行うことではありません。コントローラはモデルを操作してビューをレンダリングします。それは完全にビューの責任です。これらのビューでHTMLヘルパーを使用して、よく繰り返すロジックをカプセル化することができます。 –

+0

私はちょっと読んでいましたが、ViewContextなどのAjaxHelperクラスのインスタンスを作成する必要があるようです。その多くを行うことはできません。私はMVCを初めて使用しています –

関連する問題