10 html asp.net-mvc
如标题中所示.我使用这种方法允许每个表单有多个提交按钮,并且有多个操作来处理它们.
但是 - 由于一些奇怪的原因 - 突然间我的提交按钮没有提交表格!?这会发生什么原因?
使用IE,FF,Chrome测试 - 全部最新
查看代码:
<%@ 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>
Run Code Online (Sandbox Code Playgroud)
行动:
[HttpPost]
[ActionName("SignUp")]
[UnitOfWork]
[AcceptParameter(Action = "ActionRegister")]
public ActionResult SignUp_Register(SignUpViewModel vm)
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
我尝试将它从提交更改为按钮,它适用于所有2个帖子,然后停止了?!
我完全迷失了......我打赌我做的事情完全是愚蠢的......
萤火虫的后期输出:
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
Run Code Online (Sandbox Code Playgroud)
Rob*_*ett 10
你在输入上设置了名字吗?
除非您指定"name"属性,否则不会发送表单字段.
<input type="submit" name="Delete" value="Delete" />
<input type="submit" name="Edit" value="Delete" />
Run Code Online (Sandbox Code Playgroud)
编辑:我看到你正在使用按钮而不是提交.这可能是问题所在.
你需要使用这样的输入:
<input type="submit" value="Register" name="ActionRegister"/>
<input type="submit" value="Cancel" name="ActionCancel" class="cancel" />
Run Code Online (Sandbox Code Playgroud)
我以前这样做的方式是将我的表单发布到相同的操作。在我的操作中,我检查输入按钮的值。
因此,在您的情况下,您应该在您的视图上执行以下操作。保持两个输入提交的名称相同但值不同。
<% using (Html.BeginForm("SignUp", "SetUp", FormMethod.Post))
{%>
<%: Html.ValidationSummary()%>
<input type="submit" value="Register" name="actionName" />
<input type="submit" value="Cancel" name="actionName" class="cancel">Cancel</input>
}
Run Code Online (Sandbox Code Playgroud)
在你的控制器上
public ActionResult SignUp_Register(SignUpViewModel vm,string actionName)
{
if(actionName =="Register")
//Do something;
if(actionName =="Cancel")
//Do something;
return View();
}
Run Code Online (Sandbox Code Playgroud)
在标准情况下,这些应该有效......
现在让我强调一些有趣的事情......!
1)在表单的提交事件中,如果您在 JavaScript 中禁用提交的所有输入类型以禁用双重提交,那么您将始终在控制器中获得它们的空值,因为它们被禁用。
2)我意识到你在提交时取消了类,如果你使用 jQuery 验证,这会产生一些意想不到的行为。参考:http: //docs.jquery.com/Plugins/Validation/Reference
希望这可以帮助..!!
| 归档时间: |
|
| 查看次数: |
24940 次 |
| 最近记录: |