发布表单并重定向到操作ASP.NET MVC

时间:2009-07-15 21:52:08

标签: asp.net-mvc

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

但是我需要确保一切正常,JS已禁用。

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

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

我可以为图像背景等设置4个不同的提交按钮,但这感觉不对。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

没有Javascript,一个简单的链接无法通过POST提交。您必须使用提交按钮才能执行此操作。幸运的是,HTML提供了一种简单的方法来执行图像提交按钮:

<input type="image" src="http://url/to/image" alt="Step 1" id="btnStep1" />

您始终可以为Javascript-able添加jQuery处理:

$('#btnStep1').click(function(){...});

答案 1 :(得分:2)

您可以在表单上设置多个提交按钮:

<input type="submit" name="step1" value="Step 1"/>
<input type="submit" name="step2" value="Step 2"/>
<input type="submit" name="step3" value="Step 3"/>

并在你的行动中:

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
    }
    ...
}

答案 2 :(得分:2)

您可以使用我在the net上找到的属性来处理同一表单上的多个按钮。这将确定在控制器上执行的操作。因此,您可以在控制器上执行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"/>

然后在控制器......

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

然后,您可以相对轻松地在注册过程中的任何步骤之间点击(可能一旦完成验证并且您已经完成了每个步骤)。

希望这有助于某人。我刚刚发布了发布日期的问题,但我还是认为我会发布这个: - )