在回发中发送本地生成数据的选项(ASP.NET)

时间:2012-05-29 00:04:05

标签: javascript asp.net kendo-ui

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

我的新问题是我有一整套在浏览器客户端中完全创建和编辑的项目。控件本身不是ASP.NET控件。 (我正在使用kendo list view)。

如何发回这些数据?

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

我能想到的唯一“某种方式”是将所有值序列化为单个字符串并将其设置为隐藏字段值。

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

对于此问题,数据采用以下格式:

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

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

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

2 个答案:

答案 0 :(得分:2)

  

写入DOM的某种方式,然后由ASP.NET绑定功能选择。

不确定你的意思 - 没有ASP.NET服务器控件,没有任何东西会在回发上获取值。服务器控件使用ViewState的隐藏字段来存储此数据,但是从客户端添加或更新项目实际上并不可行。

由于您已经拥有JSON数据,我只需将其放入HiddenFieldValue并在C#端使用JSON反序列化器将其恢复为POCO。

JavaScriptSerializerDataContractJsonSerializerJSON.NET都应该适用于C#反序列化例程而无需太多的手动工作。

答案 1 :(得分:1)

如果操作具有破坏性,请使用post,否则请使用get

对于数据格式,我建议json

使用json.net和c#dynamic以及expendo,它们很容易使用而不会对页面进行太多改动。