ユーザー(クライアント)が注文できるjquery sortable + C#でリストを作成しました:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
HtmlGenericControl ul = new HtmlGenericControl("ul");
ul.ID = "ID";
ul.ClientIdMode = Static;
HtmlGenericControl li_1 = new HtmlGenericControl("li");
li_1.ID = "segment";
li_1.InnerText = "server 1";
li_1.ClientIdMode = Static;
HtmlGenericControl li_2 = new HtmlGenericControl("li");
li_2.ID = "page";
li_2.InnerText = "server 1";
li_2.ClientIdMode = Static;
ul.Controls.Add(li_1);
ul.Controls.Add(li_2);
static.Controls.Add(ul);
}
サーバー生成:
<div id="static" runat="server">
<ul id="ID">
<li id="segment">server 1</li>
<li id="page">server 2</li>
</ul>
</div>
クライアント生成 (変更):
<div id="static" runat="server">
<ul id="ID">
<li id="page">client 1</li>
<li id="segment">client 2</li>
</ul>
</div>
イベント保存:
protected void btnSave_Click(object sender, EventArgs e)
{
HtmlGenericControl ul = Libreria.Global.FindControlRecursivo(this, "ID") as HtmlGenericControl;
foreach(HtmlGenericControl li in ul.Controls.OfType<HtmlGenericControl>())
{
// Always get html generated by server, first "segment" element and after "page" element
}
}
すべてのポストバックで動的コードを生成するたびに、サーバーが生成するコードを常に取得すると、有効な場合、リストは空のポストバックになります。=(
サーバー側から生成された、クライアント側で変更された HTML コードを取得するにはどうすればよいですか?
更新: 他のオプションは 、html を送信する javascript でWebMethodsを使用しています:
document.getElementById("ID").innerHTML;
単純な文字列の要素を処理できません
HtmlGenericControl ul = new HtmlGenericControl();
ul.InnerHtml = stringHtml;
foreach(HtmlGenericControl li in ul.Controls.OfType<HtmlGenericControl>())
{
// any element
}