MVC链接按钮等效

时间:2010-02-04 15:12:56

标签: asp.net asp.net-mvc

我正在重写Web窗体应用程序,以学习一些MVC技能。

我在原始应用程序上有许多LinkBut​​tons,它们回发并引发一个将数据重新绑定到数据网格的服务器端事件。

E.g。                          

事件处理程序:

protected void lbtnOffset0_Click(object sender, EventArgs e)
{
    Session["Offset"] = 0;
    DataBind(); //this rebinds the data using the above argument
}
protected void lbtnOffset1_Click(object sender, EventArgs e)
{
    Session["Offset"] = lbtnOffset1.Text;
    DataBind(); //this rebinds the data using the above argument
}

我目前在MVC中拥有的是:

     <%= Html.ActionLink("CurrentYr", "Index", 0)%>
     <%= Html.ActionLink("1", "Index", 1)%>

    public ActionResult Index()
    {
        return View(MietController.GetMietByYearOffset(0);
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(int? offset)
    {
        int offsetValue = offset ?? 0;
        return View(MietController.GetMietByYearOffset(offsetValue);
    }

由于ActionLink呈现标记,因此不会回发,因此不会调用重载的Index()方法。在MVC中我有什么选择?

1 个答案:

答案 0 :(得分:1)

尝试将您的操作链接更改为:

 <%= Html.ActionLink("CurrentYr", "Index", new { offset = 0 } )%> 
 <%= Html.ActionLink("1", "Index", 1, new { offset = 1 } )%> 

将HttpVerbs.Get添加到第二个Index操作中。

超链接作为GET请求发送。只要您的操作接受它们就可以了,并确保在命令行中添加正确的参数。

您可能还需要考虑制作这些AJAX ActionLinks - 它们可以使用POST,但需要您指定新内容的加载位置。操作可能还需要更改,以便在通过AJAX请求时返回部分视图,这样您就不会返回整个页面,而只返回更新的部分。