Asp.net mvc 如何将深层JSON对象发送到操作?
在我的web应用程序中,我有一个动态生成的表单,我用它创建一个JSON对象,以回溯到一个动作。如图所示:Asp.net mvc 如何将深层JSON对象发送到操作?,asp.net-mvc,json,Asp.net Mvc,Json,在我的web应用程序中,我有一个动态生成的表单,我用它创建一个JSON对象,以回溯到一个动作。如图所示: function getConfigItemWithValidators() { log.info("getConfigItemWithValidators()"); var oConfigItem = { "Name": $("#txtName").html(), "InputFileCellInde
function getConfigItemWithValidators() {
log.info("getConfigItemWithValidators()");
var oConfigItem = {
"Name": $("#txtName").html(),
"InputFileCellIndex": $("#inpFieldIndex").val(),
"Validators": new Array() };
for (var i = 0; true; i++) {
var oHiddenValidatorName = $("[name=hidVld"+i+"]");
var oHiddenValidatorVal = $("[name=txtVld"+i+"]");
if ($("[name=hidVld" + i + "]").length > 0) {
var oValidator = {
"ValidationType": oHiddenValidatorName.val(),
"ValidationValue": oHiddenValidatorVal.val() };
oConfigItem.Validators.push(oValidator);
}
else
break;
}
return oConfigItem
}
function saveConfigItemChanges() {
log.info("saveConfigItemChanges()");
var oConfigItem = getConfigItemWithValidators();
$("#divRulesContainer").hide("normal");
$.getJSON("PutValidationRules", oConfigItem,
saveConfigItemChangesCallback);
}
在调试过程中,我注意到model.Validators是空的:
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult PutValidationRules(ConfigItem model)
{
// model.Validators is empty
return Json(true);
}
以下是配置项目的代码:
public class ConfigItem
{
public string Name { get; set; }
public int InputFileCellIndex { get; set; }
private IList<Validator> _validators = new List<Validator>();
public IList<Validator> Validators
{
get
{
return _validators;
}
}
public void AddValidator(Validator aValidator)
{
aValidator.ConfigItem = this;
_validators.Add(aValidator);
}
}
公共类ConfigItem
{
公共字符串名称{get;set;}
公共int InputFileCellIndex{get;set;}
私有IList_validators=新列表();
公共IList验证器
{
得到
{
返回验证程序;
}
}
公共无效添加验证程序(验证程序验证程序)
{
aValidator.ConfigItem=此;
_添加(aValidator);
}
}
我需要做些什么来获取ConfigItem.Validators,以便为我的JSON请求生成?它是空的,因为默认绑定器对数组不起作用。您将需要实现custombinder。
您可以看到CustomBinder的一个示例,它是空的,因为默认的binder不能很好地用于数组。您将需要实现custombinder。
您可以看到一个自定义活页夹的示例而不是编写自定义活页夹,我让我的表单适应内置的活页夹。当然,这总是一个选择,但属性的名称可以更改,然后您必须在视图中甚至HTML切片中进行类似的更改。我认为这会增加不必要的工作量。与其编写自定义活页夹,我让我的表单适应内置的活页夹。当然,这总是一个选择,但属性的名称可以更改,然后您必须在视图中进行类似的更改,甚至在HTML切片中进行更改。我认为这会增加不必要的工作量。