Я имел этот тот же вопрос некоторое время назад и столкнулся с одним из сообщений Scott Hanselman:
Реализация Загрузка Файла HTTP с ASP.NET MVC включая Тесты и Насмешки
Hope это помогает.
Для использования BeginForm
вот, способ использовать его:
using(Html.BeginForm("uploadfiles",
"home", FormMethod.POST, new Dictionary<string, object>(){{"type", "file"}})