此代码在某一点上有效。我不确定是什么打破了它,但基本上在回发我正在寻找FormsCollection中存在提交按钮键。根据存在,我执行不同的操作。处理此问题的自定义属性受到了影响。当我单步执行并查看FormsCollection时,除了提交表单的提交按钮外,我可以看到表单中的所有键/值。
通过Fiddler2查看提交,它甚至看起来像提交按钮被发送到服务器的其余值。如果我放入一个我正在查找的同名隐藏字段(和硬编码值),我可以成功点击“if exists”逻辑分支,因为隐藏字段的值被发送到服务器。
这是我的表格:
@using (Html.BeginForm("Respond", "AccountInvitations", new {id = Model.Invitation.InvitationCode, ReturnUrl = Request.QueryString["ReturnUrl"] ?? string.Empty}, FormMethod.Post, new {@class = "invitation-details-form"}))
{
<div class="modal-body">
<div class="status-message info">
<i></i>
You have been invited to join <strong>@Model.Invitation.AccountName</strong>.
Create your profile below to join this account.
</div>
@Html.AntiForgeryToken()
@Html.ServerValidationSummary()
@Html.EditorFor(model => model.InvitationResponse, "InvitationResponseDto", "")
</div>
<div class="modal-footer">
<div class="button-container clearfix">
<input type="submit" name="accept" value="Accept Invitation" class="btn btn-secondary" />
<input type="submit" name="decline" value="Decline Invitation" class="btn btn-link cancel" />
</div>
</div>
}
当我按任何一个(表单已提交并且编辑器模板中的所有字段都显示,但不提交输入)时,FormsCollection中都不显示“accept”或“reject”。
我不想用javascript设置隐藏字段值来处理这个问题。
答案 0 :(得分:3)
setTimeout()
延迟禁用就可以了。
答案 1 :(得分:0)
或者你可以使用
<div class="modal-footer">
<div class="button-container clearfix">
@using (Html.BeginForm("Your_ActionResult", "Your_controller"}, FormMethod.Get/Post))
{
@Html.AntiForgeryToken()
<input type="submit" name="accept" value="Accept Invitation" class="btn btn-secondary" />
}
@using (Html.BeginForm("Your_ActionResult", "Your_controller"}, FormMethod.Get/Post))
{
@Html.AntiForgeryToken()
<input type="submit" name="decline" value="Decline Invitation" class="btn btn-link cancel" />
}
</div>
</div>
您必须在Controller中指定调用ActionResul方法的提交按钮