В Web Api я обычно объявляю такие действия:
[ResponseType(typeof(MyModel))]
public async Task<IHttpActionResult> Get(HttpRequestMessage request, int accountId)
{
//get myModel
return Ok(myModel);
}
Мне нравится, что запрос передается, скорее получая его от контроллера. Делает ли MVC что-то подобное? Я искал, но не могу найти примеры или ссылки на эту способность.
edit: Кроме того, я хотел бы вернуть интерфейс. В основном я ищу что-то подобное в MVC:
[ResponseType(typeof(MyModel))]
public async Task<IActionResult> Get(HttpRequestMessage request, int accountId)
{
//get myModel
return View(myModel);
}
Он немного отличается от MVC, Actions
maps для взаимодействия с пользователем, а не напрямую с HttpRequest как таковым. Они предназначены для передачи в Model
и ответа с помощью View()
. Обычно вам не нужно проверять такие вещи, как заголовки и тип метода, потому что то, что вам нужно, является частью параметров метода. Если вам нужен View
который будет использоваться для определенного типа метода, вы можете украсить его с помощью [HttpPost]
или [HttpGet]
и т.д.
Вы можете получить текущий HttpContext через статическое свойство HttpContext.Current.HttpRequest
непосредственно из самого действия контроллера достаточно легко
Не уверен, почему вы бросаете вызов всем этим дополнительным вещам, вы можете просто вернуть JSON своего объекта, если необходимо, использовать его с Ajax. Украсьте метод с помощью [HttpPost]
, вы хотите только сообщение.
// Home/Get/1 (use 'id' in the constructor parameter)
// Home/Get/?accountID=1 (anything other than 'id' in the constructor)
public JSONResult Get(int id)
{
//To get the Current Request, just start typing Request
Request.Browser();
MyModel myModel = Get.MyModel(id);
return JSON(myModel, allowget);
}
Использование его как задачи и сообщения. Я все еще не уверен, зачем нам это нужно, но ОК.
// FormVariable "accountID=1&userID=23"
[HttpPost]
public async Task<JSONResult> Get(int accountID, int userID)
{
//To get the Current Request, just start typing Request
Request.Browser();
MyModel myModel = await Get.MyModel(id);
return JSON(myModel);
}