2011-02-14 15 views
18

acción utilización MVC atributos para mapear la misma vista para HTTP GET o POST:¿Cómo determinar si la vista es para GET o POST en ASP.NET MVC?

[HttpGet] 
public ActionResult Index() 
{ 
    ViewBag.Message = "Message"; 
    return View(); 
} 

[HttpPost] 
public ActionResult Index(decimal a, decimal b, string operation) 
{ 
    ViewBag.Message = "Calculation Result:"; 
    ViewBag.Result = Calculation.Execute(a, b, operation); 
    return View(); 
} 

En la vista de MVC, ¿cómo puedo determinar si la vista es para HTTP GET o POST HTTP?


en Vistas es IsPost

@{ 
    var Message=""; 
    if(IsPost) 
     { 
      Message ="This is from the postback"; 
     } 
     else 
    { 
      Message="This is without postback"; 
    } 
} 

Respuesta

29

System.Web.HttpContext.Current.Request.HttpMethod tiendas método actual. O simplemente Request.HttpMethod dentro de la vista, pero si necesita verificar esto, puede haber algún problema con su enfoque.

Piensa en utilizar el patrón Post-Redirect-Get para generar el repostado.

9
<% if (System.Web.HttpContext.Current.Request.HttpMethod.ToString() == "GET") { %><!-- This is GET --><% } 
    else if (System.Web.HttpContext.Current.Request.HttpMethod.ToString() == "POST") 
     { %><!--This is POST--><%} 
     else 
     { %><!--Something another --><% } % 
Cuestiones relacionadas