Вы можете сделать следующее: Вернуть результат действия, который генерирует форму с полями и использует JavaScript для автоматической отправки отправленной формы.
Вот код для HttpPostResult
public class HttpPostResult :
ActionResult
{
string _formName;
NameValueCollection _inputs;
string _url;
public HttpPostResult(
string url ,
NameValueCollection inputs ,
string formName = "form1" )
{
_url = url;
_inputs = inputs;
_formName = formName;
}
public override void ExecuteResult( ControllerContext context )
{
// Html generation
var html = new StringBuilder();
html.Append( "<html><body onload=\"document.form1.submit()\">" );
html.AppendFormat(
"<form name=\"{0}\" method=\"POST\" action=\"{1}\">" ,
_formName ,
_url
);
foreach( var key in _inputs.AllKeys )
html.AppendFormat(
"<input name=\"{0}\" type=\"hidden\" value=\"{1}\">" ,
key ,
_inputs[ key ]
);
html.Append( "</form></body></html>" );
// Write to Response stream
context.HttpContext.Response.Write( html.ToString() );
context.HttpContext.Response.End();
}
}
Тогда, когда вам требуется, чтобы результат действия ваших контроллеров возвращал POST, а не использование GET:
return new HttpPostResult( url , inputs );