获取自定义属性的回发值

时间:2014-07-14 16:29:30

标签: c# asp.net

所以,我有一个代码:

protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
  writer.AddAttribute("data-value", "{ \"test\": 3 }");
  base.Render(writer);
}

我正在使用一个名为DataField的新类,它继承了HiddenField。这样做的整个目标是能够发送JSON对象,从客户端修改它,然后将其发布回服务器。所以,使用jQuery:

var data = $('#DataField').data('value');
data.test = 1;
$('#DataField').attr('data-value',JSON.stringify(data));

现在,从这里开始,如何从服务器获取data-value属性回传?我知道整个页面都被贴回来了,所以,它应该在某个地方,不是吗? 覆盖LoadPostData无效,因为其中包含的属性为value而没有其他内容。

1 个答案:

答案 0 :(得分:3)

  

我知道整个页面都被回发了,所以,它应该在某个地方,不是吗?

不。 “整页”未发布到服务器。表单值将发布到服务器。为了使服务器端代码(基本上DataField的实例)接收值,需要将其设置为input type="hidden"data-*属性在客户端使用,它们不会作为表单的一部分发布到服务器。

所以当你这样做时:

$('#DataField').attr('data-value',JSON.stringify(data));

你也想要这样做:

$('#DataField').val(JSON.stringify(data));

这会将data的JSON编码字符串设置为input type="hidden"的值,该值将发布回服务器并在此处提供:

SomeDataField.Value