我想创建一个页面,其中包含下一个按钮和上一个按钮,用于切换显示的图像。
为此,我创建了一个Ajax.BeginForm
并插入其中,一个图像和两个提交按钮。
我(我应该)在Ajax.BeginForm
内有多个提交按钮吗?
控制器如何分别处理每个提交?
答案 0 :(得分:24)
试试这个,
查看强>
@model TwoModelInSinglePageModel.RegisterModel
@using (Ajax.BeginForm("DYmanicControllerPage", "Test", FormMethod.Post,null, new { id = "frmSignUp" }))
{
<div>
<input type="hidden" id="" name="hidden2" id="hdasd" />
@Html.HiddenFor(m => m.hidden1)
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name)
@Html.ValidationMessageFor(m => m.Name)
</div>
<br />
<div>
@Html.LabelFor(m => m.Address)
@Html.TextBoxFor(m => m.Address)
@Html.ValidationMessageFor(m => m.Address)
</div>
<br />
<div>
@Html.LabelFor(m => m.PhoneNo)
@Html.TextBoxFor(m => m.PhoneNo)
@Html.ValidationMessageFor(m => m.PhoneNo)
</div>
<input type="submit" value="Save" id="btnSave" name="ButtonType"/>
<input type="submit" value="Next" id="btnNext" name="ButtonType" />
}
<强>控制器强>
[HttpPost]
public ActionResult DYmanicControllerPage(RegisterModel model, string ButtonType)
{
if(ButtonType == "Next")
{
// Do Next Here
}
if (ButtonType == "Save")
{
//Do save here
}
return JavaScript("REturn anything()");
}
答案 1 :(得分:7)
我建议您有两个按钮,然后根据点击的按钮,您可以在表单上设置操作:
<强>剃刀强>
$(function (){
$("#btn-prev").click(function() {
$("#form").attr
(
"action",
"@Url.Action("Action", "Controller", new {area="Area" })",
).submit();
});
$("#btn-next").click(function() {
$("#form").attr
(
"action",
"@Url.Action("Action", "Controller", new {area="Area" })",
).submit();
});
});
我在这里使用jQuery来做这件事,但我认为你可以理解。
答案 2 :(得分:1)
我有同样的要求/问题,并在这里尝试了两种解决方案,它们都适合我。我喜欢在点击时通过jquery设置动作的想法,所以我可以将我的动作分开,以便其他视图可以使用它们。
但是,我发现当我在调试时执行此操作时,它会发布TWICE并且 BOTH 会触发OnSuccess和OnFailure。它只会在调试时发生。选择时请记住这一点。