2012-06-07 3 views
3

Поскольку из бета-версии ASP.NET Web API, я использовал HttpActionContext.RequestContentKeyValueModel для получения входных параметров из тела запроса POST:Альтернатива для HttpActionContext.RequestContentKeyValueModel на ASP.NET Web API

public override void OnActionExecuting(HttpActionContext actionContext) 
{ 
    var requestContentKeyValueModel = actionContext.RequestContentKeyValueModel; 
    //Do something in here 

    base.OnActionExecuting(actionContext); 
} 

, но в новом релиз версии RC, это свойство исчезло, есть ли альтернатива для этого?

ответ

5

Вы можете использовать HttpContext.Current.Request.Form.

EDIT

Вы всегда можете скрыть его за интерфейс:

public interface IKeyValueProvider 
{ 
    string GetValue(string key); 
} 

class RequestFormKeyValueProvider : IKeyValueProvider 
{ 
    public string GetValue(string key) 
    { 
     return HttpContext.Current.Request.Form[key]; 
    } 
} 

Вводят IKeyValueProvider в контроллерах и издеваться в тестах.

+0

Спасибо за ваш ответ, да, это работает для меня, однако, с таким подходом мы не можем выполнить единичный тест, я бы предпочел, чтобы эта поддержка была получена из Web Api. –

+0

@CuongLe: Пожалуйста, прочитайте обновленный ответ. – LukLed

+0

славная попытка :), большое спасибо –