如何在我的MVC3控制器中使用Ajax调用并让它只调用一个方法

时间:2011-04-26 09:03:17

标签: asp.net-mvc ajax

我认为我有以下内容:

@using (Ajax.BeginForm("Refresh", "refresh",
    new AjaxOptions { 
        UpdateTargetId = "status",
        InsertionMode = InsertionMode.Replace,
        OnBegin = "hide",
        OnComplete = "show",
    }
    ))
{
    <input type="submit" name="refresh" value="transfer1"/><br />
    <input type="submit" name="refresh" value="transfer2"/><br />
    <input type="submit" name="refresh" value="transfer3"/><br />
}

我希望能够在我的控制器中触发一些代码并将所有内容保存在ONE方法中。在这个方法中,我想检查传递的值,并根据哪个值做一些事情。

这很重要,因为我实际上有很多行输入按钮。我不确定如何在一种方法中做到这一点。任何建议/意见将不胜感激。

1 个答案:

答案 0 :(得分:0)

为了获得控制器操作中按钮的值,您可以执行以下操作:

public ActionResult Refresh(string refresh)
{
    if (refresh == "transfer1")
    {
        // Button 1 was clicked ...
    } 
    else if (refresh == "transfer2") 
    {
        // Button 2 was clicked ...
    }
    else if (refresh == "transfer3") 
    {
        // Button 3 was clicked ...
    }
    ...
}

另一种可能性是,如果您不想依赖于测试按钮的值,实际为这些按钮提供不同的名称:

<input type="submit" name="refresh1" value="transfer1"/><br />
<input type="submit" name="refresh2" value="transfer2"/><br />
<input type="submit" name="refresh3" value="transfer3"/><br />

然后:

public ActionResult Refresh()
{
    if (!string.IsNullOrEmpty(Request["refresh1"]))
    {
        // Button 1 was clicked ...
    } 
    else if (!string.IsNullOrEmpty(Request["refresh2"])) 
    {
        // Button 2 was clicked ...
    }
    else if (!string.IsNullOrEmpty(Request["refresh3"])) 
    {
        // Button 3 was clicked ...
    }
    ...
}