Asp.net mvc - Html-Submit-button nicht gesendet, mit der post?
Als im Titel. Ich benutze diese Methode für die Möglichkeit, mehr als einen submit-button pro Formular und mehr als eine Aktion, um Sie zu behandeln.
Jedoch - aus irgendeinem Grund plötzlich mein submit-button nicht mit dem Formular gesendet!? irgendeinem Grund warum würde das passieren?
getestet mit IE, FF, Chrome - alle aktuellen
Anzeigen-code:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Setup.Mvc.ViewModels.SignUpViewModel>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
SignUp
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm("SignUp", "SetUp", FormMethod.Post))
{
%>
<%: Html.ValidationSummary()%>
<button type="submit" value="Register" name="ActionRegister" >Register</button>
<button type="submit" value="Cancel" name="ActionCancel" class="cancel" >Cancel</button>
<fieldset>
<legend>Account Information </legend>
<dl>
<dt>
<%:Html.LabelFor(x=>x.UserName)%>
</dt>
<dd>
<%: Html.TextBoxFor(x=>x.UserName) %>
<%: Html.ValidationMessageFor(model => model.UserName) %>
</dd>
<% if (string.IsNullOrEmpty(Model.Provider))
{
%>
<dt>
<%:Html.LabelFor(x=>x.Password)%>
</dt>
<dd>
<%: Html.PasswordFor(x => x.Password)%>
<%: Html.ValidationMessageFor(model => model.Password) %>
</dd>
<%
} %>
<dt>
<%:Html.LabelFor(x=>x.Email)%>
</dt>
<dd>
<%: Html.TextBoxFor(x=>x.Email) %>
<%: Html.ValidationMessageFor(model => model.Email) %>
</dd>
<dt>
<%:Html.LabelFor(x=>x.Themes) %>
</dt>
<dd>
<%: Html.DropDownList("ThemeId", Model.Themes.Select(x=> new SelectListItem{ Text = x.DisplayName, Value = x.DisplayName}), "Select a Theme") %>
<%: Html.ValidationMessageFor(model => model.Themes) %>
</dd>
</dl>
</fieldset>
<fieldset>
<legend>
<h2>
Additional Information</h2>
</legend>
<dl>
<dt>
<%:Html.LabelFor(x=>x.PublicSite)%>
</dt>
<dd>
<%:Html.CheckBoxFor(x => x.PublicSite)%>
<%: Html.ValidationMessageFor(model => model.PublicSite) %>
</dd>
<dt>
<%:Html.LabelFor(x=>x.SiteUrl)%>
</dt>
<dd>
http://cheesyurl.com/<%:Html.TextBoxFor(x => x.SiteUrl)%>
<%: Html.ValidationMessageFor(model => model.SiteUrl) %>
</dd>
</dl>
</fieldset>
<%
}%>
</asp:Content>
Handlung:
[HttpPost]
[ActionName("SignUp")]
[UnitOfWork]
[AcceptParameter(Action = "ActionRegister")]
public ActionResult SignUp_Register(SignUpViewModel vm)
{
return View();
}
Habe ich versucht Sie es von submit-Schaltfläche an und es funktionierte für alle 2 posts und dann aufgehört?!
bin ich ganz verloren, aus Gründen... ich Wette, ich mache soemthing völlig dumm...
Post Ausgabe aus firebug:
Parametersapplication/x-www-form-urlencoded
Email wayne@isit.gd
Password sdfsdfsdfsdf
PublicSite false
SiteUrl sdfsdfsdf
ThemeId
UserName Usernames-12131
Source
Content-Type: application/x-www-form-urlencoded Content-Length: 112 UserName=Usernames-Sux0r&Password=sdfsdfsdfsdf&Email=wayne%40isit.gd&ThemeId=&PublicSite=false&SiteUrl=sdfsdfsdf
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie die Namen der input?
Formular Felder nicht gesendet werden, es sei denn, Sie geben Sie die "name" - Attribut.
EDIT: ich sehe, Sie sind über die Tasten, anstatt Einreichen. Was könnte das problem sein.
Müssen Sie haben Eingänge wie diese:
Die Art, wie ich dies getan habe, bevor ich poste meine form zu gleichen Aktion.
In meiner Aktion, die ich überprüfen Sie den Wert der input-Taste.
Also In Ihrem Fall sollten Sie nach Ihrer Ansicht.
Halten Sie die Namen der beiden input-submit gleichen, aber unterschiedlichen Wert.
Und auf dem controller
In standard-Fällen, diese sollte funktionieren....
Lassen Sie mich hervorheben, etwas das jetzt interessant...!!
1)Auf den Submit-Ereignis des Formulars, wenn Sie deaktivieren alle input-Typ submit in JavaScript zu deaktivieren, doppelklicken Sie Einreichen, dann erhalten Sie immer die null-Werte in der Steuerung, da Sie deaktiviert sind.
2)ich erkannte, dass Sie Abbrechen Klasse auf Ihre vorlegen, die einige unerwünschte Verhalten
wenn Sie mit jQuery Validierung.
Ref: http://docs.jquery.com/Plugins/Validation/Reference
Hoffe, das hilft..!!
Diese:
Scheint zu funktionieren?! wtf???
Müssen Sie gleich die id der Schaltfläche (Ansicht) und den Namen der Variablen zu erhalten (Controller)
Der Wert der Taste wird gesendet, um die variable
Und controller:
variable btn entweder "Registrieren" oder "Speichern", je nachdem auf die Schaltfläche geklickt