validate query net isvalid frombody from diet body c# asp.net-mvc asp.net-mvc-routing model-binding

c# - net - web api query string parameters



¿Cuál es el equivalente de WebApi[FromUri] en ASP.NET MVC? (1)

Sólo funcionará ™:

[HttpGet] public ActionResult Thing(WhateverModel model) { // use model return View(); }

Al menos, al usar la URL /thing?Year=2014&Month=9 .

El problema es tu enrutamiento. La URL /thing/2014/9 no se asignará usando la ruta predeterminada de MVC, ya que es /{controller}/{action}/{id} , donde {id} es un int opcional.

Lo más fácil sería usar enrutamiento de atributos:

[HttpGet] [Route("/thing/{Year}/{Month}"] public ActionResult Thing(WhateverModel model) { // use model return View(); }

Esto asignará la URL a su modelo.

En WebApi puedo decorar un parámetro en una acción del controlador con [FromUri] para que los componentes de la URI "deserialicen", por así [FromUri] , en un modelo POCO; también conocido como modelo de enlace.

A pesar de usar MVC desde 2.0, nunca lo he usado para sitios web (no sé por qué). ¿Cuál es el equivalente de esto en ASP.NET MVC 5?

El atributo no parece ser reconocido en el IDE a menos que necesite hacer referencia a una biblioteca.

Me gustaría que ~/thing/2014/9 uniera al siguiente modelo:

public class WhateverModel { public int Year { get; set; } public int Month { get; set; } }

Gracias

Actualizar

En la otra pregunta (enlace arriba), el OP dice:

Sin embargo, cambie esto a MVC normal, no a WebApi, y el archivador de modelo predeterminado se descompone y no puede enlazar las propiedades de los objetos en la matriz anidada

Lo que implica que está usando el atributo de la WebApi. Supongo. No tengo esas referencias, porque estoy en MVC, ¿entonces (ab) la versión de WebApi es la forma aceptada de hacer esto en MVC?

Actualización 2

En la respuesta a esa pregunta está:

Debe construir su cadena de consulta respetando las convenciones de nomenclatura del modelo MVC.

Además [FromUri] atributo [FromUri] en su acción de ejemplo se ignora por completo, ya que MVC DefaultModelBinder no lo conoce

Así que todavía me queda sin saber qué hacer o sobre qué diablos estaba hablando el OP en esa pregunta, si estaba obteniendo algún éxito con el atributo incorrecto.

Supongo que espero una respuesta clara y no el barro de esa otra pregunta.