Asp.net mvc 发布表单并重定向到action ASP.NET MVC

Asp.net mvc 发布表单并重定向到action ASP.NET MVC,asp.net-mvc,Asp.net Mvc,我有一个导航栏,它使用JQuery在注册过程的4个阶段之间移动 但是,我需要确保一切都在JS禁用的情况下工作 因此,我在页面底部有这4个链接图像,我需要这样,如果单击其中一个,它将发布到当前操作,这样我可以保存所有表单数据,然后重定向到下一阶段 重定向非常简单,因为我将只在路由或表单中传递一个参数,但我不知道如何仅使用操作链接发布该方法 我可以把4个不同的提交按钮与图像背景等不同的类,但这感觉是错误的 有什么想法吗?没有Javascript,一个简单的链接不能通过POST提交。您必须使用“提交”

我有一个导航栏,它使用JQuery在注册过程的4个阶段之间移动

但是,我需要确保一切都在JS禁用的情况下工作

因此,我在页面底部有这4个链接图像,我需要这样,如果单击其中一个,它将发布到当前操作,这样我可以保存所有表单数据,然后重定向到下一阶段

重定向非常简单,因为我将只在路由或表单中传递一个参数,但我不知道如何仅使用操作链接发布该方法

我可以把4个不同的提交按钮与图像背景等不同的类,但这感觉是错误的


有什么想法吗?

没有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 */) { ... }