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)));
これは、ビュー内で動作しますが、私はController.It内でそれを必要と働いていませんそこには何が必要ですか? –
コントローラー?最初にコントローラの中でHTMLを生成するのはなぜですか?これはコントローラーが行うことではありません。コントローラはモデルを操作してビューをレンダリングします。それは完全にビューの責任です。これらのビューでHTMLヘルパーを使用して、よく繰り返すロジックをカプセル化することができます。 –
私はちょっと読んでいましたが、ViewContextなどのAjaxHelperクラスのインスタンスを作成する必要があるようです。その多くを行うことはできません。私はMVCを初めて使用しています –