我正在重写Web窗体应用程序,以学习一些MVC技能。
我在原始应用程序上有许多LinkButtons,它们回发并引发一个将数据重新绑定到数据网格的服务器端事件。
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中我有什么选择?
答案 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请求时返回部分视图,这样您就不会返回整个页面,而只返回更新的部分。