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