2009-07-15 51 views
6

我有一个导航栏,它使用JQuery在注册过程的4个阶段之间移动。发布表单并重定向到操作ASP.NET MVC

但是我需要确保一切正在JS禁用。

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

重定向很容易,因为我只是在路由或表单中传递一个参数,但我不知道如何使用操作链接发布该方法。

我可以把4个不同类别的提交按钮用于图像背景等,但这种感觉不对。

任何想法?

回答

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

没有Javascript,一个简单的链接不能通过POST提交。你必须使用提交按钮来完成它。幸运的是,HTML提供了一个简单的方法来做到图像提交按钮:

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

您可以随时添加的jQuery处理的Javascript的能力:

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

谢谢你看起来像我将有一个4提交按钮的形式。 虽然我怎么知道按钮被点击了? – ddd 2009-07-15 22:03:09

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

然后,您可以在注册过程中(在任何步骤之间单击大概一旦验证完成后,你已经通过了各第一)相对容易。

希望这可以帮助别人。我只是提出了问题发布日期,但认为我会发布这个无论如何:-)

相关问题