Hay un error en Html.BeginForm()
ayudante (el que no acepta ningún argumento) cuando se usa con cookieless="true"
. No tiene en cuenta la identificación de la sesión al generar la url. Así que en lugar de:
<form action="/(S(kkt0zgbnuaoxad23ew33iod4))/home/index" method="post">
genera:
<form action="/home/index" method="post">
Cuando publicas en /home/index
automáticamente se realiza una redirección a /(S(kkt0zgbnuaoxad23ew33iod4))
por ASP.NET. Una redirección significa una solicitud GET => su acción POST nunca se verá afectada.
Como solución, podría escribir un Html.BeginForm
personalizado ayudante para corregir el error:
public static class FormExtensions
{
public static IDisposable MyBeginForm(this HtmlHelper htmlHelper)
{
var rawUrl = htmlHelper.ViewContext.HttpContext.Request.RawUrl;
var formAction = htmlHelper.ViewContext.HttpContext.Response.ApplyAppPathModifier("~/") + rawUrl;
var builder = new TagBuilder("form");
builder.MergeAttributes(new RouteValueDictionary());
builder.MergeAttribute("action", formAction);
builder.MergeAttribute("method", HtmlHelper.GetFormMethodString(FormMethod.Post), true);
htmlHelper.ViewContext.Writer.Write(builder.ToString(TagRenderMode.StartTag));
var form = new MvcForm(htmlHelper.ViewContext);
return form;
}
}
y luego usa:
@using (Html.MyBeginForm())
{
...
}
En lo que respecta a las otras sobrecargas del ayudante BeginForm, deberían funcionar bien y generar la acción adecuada que contenga la identificación de la sesión.