2010-03-25 3 views
1

Рассмотрим два метода на контроллере CustomerController.cs:ASP.NET MVC: маршрутизация поможет

//URL to be http://mysite/Customer/ 
public ActionResult Index() 
{ 
    return View("ListCustomers"); 
} 

//URL to be http://mysite/Customer/8 
public ActionResult View(int id) 
{ 
    return View("ViewCustomer"); 
} 
  • Как бы вам настроить ваши маршруты, чтобы приспособить это требование?
  • Как вы используете Html.ActionLink при создании ссылки на страницу просмотра?

ответ

1

В Global.asax.cs, добавьте следующее (предположим, что вы используете визуальный шаблон MVC студии по умолчанию)

Route.MapRoute("Customer", 
    "Customer/{id}", 
    new { Controller = "CustomerController", action="View", id="" }); 

Убедитесь, что вы положили этот маршрут, прежде чем маршрут по умолчанию в шаблоне

Затем вам необходимо изменить свой контроллер. На вид,

public ActionResult View(int? id) 
{ 
    if (id == null) 
    { 
     return RedirectToAction("Index"); // So that it will list all the customer 
    } 
    //...The rest follows 
} 

Для вашего второго вопроса ActionLink прост.

Html.ActionLink("Link Text", "View", "Customer", new {id=1}, null);