2010-02-04 92 views
1

我正在重寫Web窗體應用程序,作爲練習來學習一些MVC技能。MVC LinkBut​​ton等價

我在原始應用程序上有多個LinkBut​​tons,它們會回發並引發將數據重新綁定到數據網格的serverside事件。

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

試着改變你的動作鏈接:

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

並添加HttpVerbs.Get你的第二個索引操作。

超鏈接作爲GET請求發送。沒關係,只要你的動作接受它們,並且確保將正確的參數添加到命令行。

您可能還想考慮製作這些AJAX動作鏈接 - 它可以使用POST,但會要求您指定新內容的加載位置。該動作可能還需要進行更改,以便在通過AJAX請求時返回部分視圖,以便不返回整個頁面,而只是返回更新的部分。

+0

看起來像你錯過了「,」1和新的。 – 2010-02-04 15:22:17

+0

@Nitin:謝謝。我修復了錯字。 – tvanfosson 2010-02-04 16:04:40

+0

這很有用,謝謝。我將研究AJAX ActionLinks。 – 2010-02-04 16:11:49