Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde galera , estou com o seguinte problema:
Quero dar um submit em um formulario porem o botão de submit está forma do formulario, portanto faria o submit com javascript.
este é o meu Form :
using (Ajax.BeginForm("Concluir","Ocorrencia",null,
new AjaxOptions
{
OnSuccess = "OnSuccess",
OnFailure = "OnFailure"
},
new { @id = "formConcluir" }
))
{
Html.EditorFor(m => m.IdStatusOcorrencia, new { id = 3});
}
e este é o helper que eu uso para gerar o botao com javascript para submeter formularios:
public static MvcHtmlString FormSimpleSubmit(this HtmlHelper htmlHelper,string linkText,string idForm, string cssClassButton = "")
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("<button OnClick='SubmitFormId{0}()' class='{1}'>{2}</button>",idForm,cssClassButton,linkText);
sb.Append("<script>");
sb.AppendFormat("function SubmitFormId{0}()",idForm);
sb.Append("{");
sb.AppendFormat("$('#{0}').submit();", idForm);
sb.Append("}");
sb.Append("</script>");
return MvcHtmlString.Create(sb.ToString());
}
a principio o botao e o script do formulario gera certinho, é feita a requisicao ajax porém na action do meu controller nao acontece nada, parei com o debug lá e nada.
esse é o form gerado pelo ajax.beginform
<form id="formConcluir" method="post" data-ajax-success="OnSuccess" data-ajax-failure="OnFailure" data-ajax="true" action="/caf/Ocorrencia/Concluir"></form>
Estava testando aqui, e o form desta maneira da errado:
@model CafData.Ocorrencia
@using(Ajax.BeginForm("Concluir","Ocorrencia",
new
{
id = Model.IdOcorrencia
},
new AjaxOptions
{
OnSuccess = "OnSuccess",
OnFailure = "OnFailure",
HttpMethod = "POST"
}))
{
<button class="k-button">Concluír</button>
}
mas se eu tiro o Using o post funciona:
@model CafData.Ocorrencia
@Ajax.BeginForm("Concluir","Ocorrencia",
new
{
id = Model.IdOcorrencia
},
new AjaxOptions
{
OnSuccess = "OnSuccess",
OnFailure = "OnFailure",
HttpMethod = "POST"
})
{
<button class="k-button">Concluír</button>
}
alguem sabe pq?
tentei com Ajax.actionlink tb e da o mesmo erro que ocorre no caso do using(ajax.beginform()), exibe o link certinho mas não da o POST,
detalhe que esqueci de comentar antes, ele não da o post e no console do firebug da o seguinte erro
"NetworkError: 500 Internal Server Error - http://localhost/caf/Ocorrencia/Concluir/40"
essa é a minha Ajax.ActionLink()
@Ajax.ActionLink("Concluir","Concluir","Ocorrencia",new {id = Model.IdOcorrencia},new AjaxOptions { HttpMethod = "POST"})
Alguma ideia?
Network error significa que o seu servidor está com problemas, talvez erros de conexão.
Já colocou um debug neste controller? Esta passando pelo controller?
Galera encontrei mais ou menos o problema só que não consegui resolver ainda
Desta forma sem o using o post ocorre normalmente no meu controller
@Ajax.BeginForm("Concluir", "Ocorrencia", new { id = Model.IdOcorrencia }, new AjaxOptions { HttpMethod = "POST"}))
{
Porem junto com o meu botao de submit gera uma saida de texto conforme a linha abaixo
System.Web.Mvc.Html.MvcForm) { }
Mas se eu coloco o using o post nao ocorre de jeito nenhum no meu controller, mas gera o botao de submit certinho na tela
@using (Ajax.BeginForm("Concluir", "Ocorrencia", new { id = Model.IdOcorrencia }, new AjaxOptions { HttpMethod = "POST"}))
{
Alguem ja passou por esse problema?