我使用了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调用替换整个帖子,但此时对现有页面的改动太大了。
答案 0 :(得分:2)
写入DOM的某种方式,然后由ASP.NET绑定功能选择。
不确定你的意思 - 没有ASP.NET服务器控件,没有任何东西会在回发上获取值。服务器控件使用ViewState的隐藏字段来存储此数据,但是从客户端添加或更新项目实际上并不可行。
由于您已经拥有JSON数据,我只需将其放入HiddenFieldValue
并在C#端使用JSON反序列化器将其恢复为POCO。
JavaScriptSerializer
,DataContractJsonSerializer
或JSON.NET
都应该适用于C#反序列化例程而无需太多的手动工作。
答案 1 :(得分:1)
如果操作具有破坏性,请使用post
,否则请使用get
。
对于数据格式,我建议json
。
使用json.net和c#dynamic
以及expendo
,它们很容易使用而不会对页面进行太多改动。