Используя FormCollection, вы вручную сопоставляете свои данные поста или ключ / значения строки запроса с значениями для использования в своем коде, используя строковую типизацию (что приводит к строковому типу кода), когда вместо этого встроенное связывание моделей может выполнять это для вас, если вы используете модели форм, или "типизированные объекты".
Я думаю, что при использовании FormCollection вы, вероятно, также потеряете возможность использовать удобные атрибуты аннотации данных (слеш-проверки) для объектов вашей модели, которые предназначены для использования с привязкой типизированной объектной модели.
Кроме того, модульное тестирование может стать гораздо более громоздким, как только вы начнете касаться своего контроллера. Запрос. Форма. Возможно, вам придется смоделировать и настроить HttpContextBase и HttpRequestBase просто для того, чтобы свойство .Form этого ложного запроса возвращало коллекцию NameValueCollection, которую вы хотите видеть в своем тесте. Сравните это с тем, что привязка модели сделает всю работу за вас, например:
// Arrange
var myModel = new MyModel( Property1 = "value1", Property2 = "value2");
// Act
var myResult = myController.MyActionMethod(myModel);
// Assert
// whatever you want the outcome to be
Таким образом, я бы рекомендовал не использовать FormCollection в максимально возможной степени.