Asp.net mvc 发布表单并重定向到action ASP.NET MVC
我有一个导航栏,它使用JQuery在注册过程的4个阶段之间移动 但是,我需要确保一切都在JS禁用的情况下工作 因此,我在页面底部有这4个链接图像,我需要这样,如果单击其中一个,它将发布到当前操作,这样我可以保存所有表单数据,然后重定向到下一阶段 重定向非常简单,因为我将只在路由或表单中传递一个参数,但我不知道如何仅使用操作链接发布该方法 我可以把4个不同的提交按钮与图像背景等不同的类,但这感觉是错误的Asp.net mvc 发布表单并重定向到action ASP.NET MVC,asp.net-mvc,Asp.net Mvc,我有一个导航栏,它使用JQuery在注册过程的4个阶段之间移动 但是,我需要确保一切都在JS禁用的情况下工作 因此,我在页面底部有这4个链接图像,我需要这样,如果单击其中一个,它将发布到当前操作,这样我可以保存所有表单数据,然后重定向到下一阶段 重定向非常简单,因为我将只在路由或表单中传递一个参数,但我不知道如何仅使用操作链接发布该方法 我可以把4个不同的提交按钮与图像背景等不同的类,但这感觉是错误的 有什么想法吗?没有Javascript,一个简单的链接不能通过POST提交。您必须使用“提交”
有什么想法吗?没有Javascript,一个简单的链接不能通过POST提交。您必须使用“提交”按钮来完成此操作。幸运的是,HTML提供了执行图像提交按钮的简单方法:
<input type="image" src="http://url/to/image" alt="Step 1" id="btnStep1" />
表单上可以有多个提交按钮:
<input type="submit" name="step1" value="Step 1"/>
<input type="submit" name="step2" value="Step 2"/>
<input type="submit" name="step3" value="Step 3"/>
您可以使用我发现的一个属性,该属性处理同一表单上的多个按钮。这将确定在控制器上执行的操作。因此,您可以在控制器上执行4个操作,并根据单击的按钮执行正确的操作,而不管在何处调用该按钮 这么少的例子;标记
<input type="submit" name="action" value="step1"/>
<input type="submit" name="action" value="step2"/>
<input type="submit" name="action" value="step3"/>
<input type="submit" name="action" value="step4"/>
然后,您可以相对轻松地在注册过程中的任何步骤之间单击(可能在验证完成后,您已经完成了每个步骤)
希望这对别人有帮助。我刚刚记下了问题的发布日期,但我想我还是会发布这个:-)谢谢,看起来我将有一个带有4个提交按钮的表单。但是我如何知道单击了哪个按钮?如果给按钮一个名称和值,它将像任何其他表单输入一样被传递,例如btnStep1=1。
public ActionResult Action(FormCollection form)
{
if (!string.IsNullOrEmpty(form["step1"]))
{
// Step 1 button was clicked
}
else if (!string.IsNullOrEmpty(form["step2"]))
{
// Step 2 button was clicked
}
else if (!string.IsNullOrEmpty(form["step3"]))
{
// Step 3 button was clicked
}
...
}
<input type="submit" name="action" value="step1"/>
<input type="submit" name="action" value="step2"/>
<input type="submit" name="action" value="step3"/>
<input type="submit" name="action" value="step4"/>
[HttpPost]
[MultiButton(MatchFormKey = "action", MatchFormValue = "step1")]
public ActionResult Step1(/* parameters */) { ... }
[HttpPost]
[MultiButton(MatchFormKey = "action", MatchFormValue = "step2")]
public ActionResult Step2(/* parameters */) { ... }
[HttpPost]
[MultiButton(MatchFormKey = "action", MatchFormValue = "step3")]
public ActionResult Step3(/* parameters */) { ... }
[HttpPost]
[MultiButton(MatchFormKey = "action", MatchFormValue = "step4")]
public ActionResult Step4(/* parameters */) { ... }