我正在建立一个食品订购有点网络项目。我使用asp.net用户控件在页面加载时添加食物,它们都有唯一的ID。但是我需要用jquery将食物添加到购物车中,并将它们显示在用户控件的食物列表旁边。现在,我调用一个webmethod,该方法创建一个虚拟页面,一个表单并添加我的控件,删除表单标签并将余数返回到我的ajax调用,JS将内容添加到我的页面。但是我的所有用户控件都具有相同的ctl00_Panel1 id。
这就是我称之为webmethod的方式
$.ajax({
type: "POST",
url: "kategorilistesi.aspx/RenderControl",
data: "{id:'" + id + "',miktar:'" + miktar + "',baslik:'" + baslik + "',aciklama:'" + aciklama + "',tutar:'" + tutarf + "'}",
//data: "{controlName:'" + "~/UserControls/ksepetitem.ascx" + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$.unblockUI();
$('#sepetxy').append(response.d);
},
failure: function (msg) {
$.unblockUI();
alert(msg);
}
});
这是我的Webmethod
[WebMethod]
public static string RenderControl(int id, string miktar, string baslik, string aciklama, double tutar)
{
kategorilistesi m = new kategorilistesi();
string uid = Guid.NewGuid().ToString();
ArrayList cart = (ArrayList)m.Session["cart"];
Siparis n = new Siparis(id, Double.Parse(miktar), baslik, aciklama, tutar, uid);
cart.Add(n);
m.Session["cart"] = cart;
Page page = new Page();
UserControl userControl = (UserControl)page.LoadControl("~/UserControls/ksepetitem.ascx");
userControl.EnableViewState = true;
ksepetitem a = (ksepetitem)userControl;
a.YemekAdi = baslik;
a.YemekFiyat = tutar;
a.YemekMiktar = Double.Parse(miktar);
a.Guid = uid;
HtmlForm form = new HtmlForm();
form.Controls.Add(userControl);
page.Controls.Add(form);
StringWriter textWriter = new StringWriter();
HttpContext.Current.Server.Execute(page, textWriter, false);
return m.CleanHtml(textWriter.ToString());
}
如何为我的控件设置唯一ID?我正在使用GUID,但我不知道如何在这种情况下添加使用它们
答案 0 :(得分:1)
原来我只需要用我的GUID自己分配控件ID。像这样,
....YemekFiyat = tutar;
a.YemekMiktar = Double.Parse(miktar);
a.Guid = uid;
a.ID = uid;
HtmlForm form = new HtmlForm();
form.Controls.Add(userControl);
page.Controls.Add(form);......