1

我使用了 ASP.NET隐藏字段控件,允许我在 javascript 中生成单项数据值,然后在回发时将这些值发送回服务器。

我的新问题是我有一个完整的项目列表,这些项目完全在浏览器客户端中创建和编辑。该控件本身不是 ASP.NET 控件。(我正在使用剑道列表视图)。

如何发回这些数据?

我假设 javascript 需要以某种方式将本地数据源编码到 DOM 中,并且服务器代码将以某种方式提取值。

我能想到的唯一“不知何故”是将所有值序列化为一个字符串并将其设置为隐藏字段值。

使用 javascript 序列化值并使用 C# 反序列化这些值当然是可行的,但似乎有点过于“手动”。我想知道是否有更直接的方法不涉及手动序列化。某种写入 DOM 的方法,然后由 ASP.NET 绑定功能获取。

对于这个问题,数据格式如下:

[
   {
      sequenceNumber : 1,
      mediaFileId: 3
    },
    {
       sequenceNumber : 2,
       mediaFileId: 28
    },
    {
       sequenceNumber : 3,
       mediaFileId:  32
    }
]

您可能会争辩说 sequenceNumber 是多余的,但我将来会添加新字段,因此最好找到一个适合多字段数据对象的解决方案。


我知道我可以用 AJAX 调用替换整个帖子,但此时对现有页面的更改太大了。

4

2 回答 2

2

某种写入 DOM 的方法,然后由 ASP.NET 绑定功能获取。

不知道你的意思是什么 - 如果没有 ASP.NET 服务器控件,就没有任何东西可以获取回发的值。服务器控件使用 ViewState 的隐藏字段来存储这些数据,但从客户端添加或更新项目实际上并不可行。

由于您已经拥有 JSON 格式的数据,因此我只需将其放入 aHiddenFieldValue并在 C# 端使用 JSON 反序列化器将其返回到 POCO。

JavaScriptSerializer, DataContractJsonSerializer, 或JSON.NET应该都适用于 C# 反序列化例程,而无需太多手动工作。

于 2012-05-29T01:11:55.820 回答
1

如果该动作具有破坏性,则使用post,否则,使用get

至于数据格式,我建议json

使用 json.net 和 c#dynamicexpendo,它们很容易使用,而不会对您的页面进行太多更改。

于 2012-05-29T00:49:08.963 回答