2010-02-04 5 views
1

Я переписываю приложение Web Forms как упражнение, чтобы узнать некоторые навыки MVC.MVC LinkButton equalivalent

У меня есть несколько LinkButtons в исходном приложении, которые возвращают и поднимают событие serveride, которое перепроверяет данные в datagrid.

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 делает тег это не делает postback, поэтому мой перегруженный метод Index() не вызывается , Каковы мои возможности для этого в MVC?

ответ

1

Попробуйте изменить ссылки на действия:

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

И добавить HttpVerbs.Get на свою вторую акцию Index.

Гиперссылки отправляются как запросы GET. Это нормально, пока ваше действие принимает их, и вы обязательно добавите правильный аргумент в командную строку.

Возможно, вы также захотите рассмотреть возможность использования этих AJAX ActionLinks, которые могут использовать POST, но для этого требуется указать, где загружается новый контент. Действие также может потребоваться изменить, чтобы он возвращал частичный вид при запросе через AJAX, чтобы вы не возвращали всю страницу, а только обновленную часть.

+0

Похоже, вы пропустили «,» между 1 и новым. –

+0

@Nitin: Спасибо. Я исправил опечатку. – tvanfosson

+0

Это работает, спасибо. Я рассмотрю AJAX ActionLinks. –