Asp.net mvc - изменить ключи перед привязкой модели - PullRequest
0 голосов
/ 07 апреля 2011

Мне нужно изменить ключи (controllerContext.HttpContext.Request.Form), прежде чем произойдет привязка.

Это вообще возможно? Я переопределил метод BindModel DefaultModelBinder и попробовал controllerContext.HttpContext.Request.Form.Add (), но он доступен только для чтения.

Я не могу изменить ключи формы в подчиненном html.

Например

ключ: xxx_xxx_rownumber_cell

новый ключ: модель [1] .Prop1

В модели также есть некоторые данные-анотации, поэтому проверка не должна быть опущена.

Ответы [ 2 ]

1 голос
/ 23 января 2012

Возможно, вы нашли другое решение для этого некоторое время назад, но если вы все еще хотите это сделать, вы сможете изменить форму следующим образом:

var collection = controllerContext.HttpContext.Request.Form;
PropertyInfo readOnly = collection.GetType().GetProperty("IsReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
readOnly.SetValue(collection, false, null);
// Your changes here.
readOnly.SetValue(collection, true, null);
0 голосов
/ 07 апреля 2011

Почему бы просто не сделать так, чтобы ваш метод действия взял FormCollection в качестве параметра и связал вручную, однако вам необходимо связать его?

Кроме того, вы также можете создать привязку пользовательской модели для определенного типа, чтобы использовать этоЯ тоже верю в конверсию.

HTH.

...