0
我发送post请求并获得响应体数据: 0 [家族] = Marco & 0 [name] = Polo & 0 [年龄] = 66 & 1 [家庭] =家庭& 0 [名称] =名称& 0 [年龄] = 22发现属性,没有从响应体(表单数据)绑定到模型MVC,默认模型绑定器
var formData = "0[family]=Marco&0[name]=Polo&0[age]=66&1[family]=Family&0[name]=Name&0[age]=22";
var data = new Dictionary<string, string>();
var preData = HttpUtility.ParseQueryString(formData);
foreach (string key in preData.AllKeys)
{
if (key != null)
{
data.Add(Replace(key), preData[key]);
}
}
我有模型:
public class User {
public string Family {get;set;}
public int Age {get;set;}
}
对于绑定我用DefaultModelBinder
:
private static bool TryUpdateModel(User user, IDictionary<string, string> formdata, ModelStateDictionary modelState) where TModel : class
{
var binder = new DefaultModelBinder();
var valueProvider = new DictionaryValueProvider<string>(formdata, CultureInfo.InvariantCulture);
var bindingContext = new ModelBindingContext
{
ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => user, typeof(User)),
ModelState = modelState,
PropertyFilter = propertyName => true,
ValueProvider = valueProvider
};
var ctx = new ControllerContext();
binder.BindModel(ctx, bindingContext);
return modelState.IsValid;
}
- 我想知道,我有数据性反应“0名] =波罗”,这不结合模式用户。属性“名称”在模型用户中不存在。
- 我想知道如果在回应更多的数据,然后我们可以绑定。
我可怎么办呢?
如果我理解正确的话,你要检查的TModel具有比你要绑定到User类之外的其他其他属性?如果是这样,你是否尝试过使用反射来检查TModel的属性(即typeof(TModel).GetProperties())? – michealt17
我解决了我的问题。 TModel是用户。我想知道表单数据是否有其他属性,然后模型用户。如果我有1个模型,我可以使用typeof(TModel).GProProperties()。但是如果我有模型列表? – Elena