Создать ссылку на главную страницу (.Net, MVC) - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть .Net MVC 3-Application, и у меня есть контроллер с именем SupplierController, который управляет двумя представлениями (страницами), списком и представлением редактирования для поставщиков. В виде списка я создал Edit-ссылки так:

@model IEnumerable<RyfMvcTestApplication1.Models.DataModel.Model.Supplier>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id })
        </td>

    </tr>
}

В режиме редактирования автоматически создается обратная ссылка

<div>
    @Html.ActionLink("Back", "Index")
</div>

но это приводит к корневой странице (http://localhost). Я хотел бы получить страницу со списком, которая имеет URL http://localhost/Supplier. Лучшее, что я до сих пор работал, это

@Html.ActionLink("Back", "Index/Supplier")

но это приводит к URL http://localhost/Supplier/Index/Supplier,, что не то, что я хочу.

Мой поставщикКонтроллер:

public class SupplierController : Controller
{
    public ActionResult Index()
    {
        List<Supplier> suppliers = sr.GetAll();

        return View("List", suppliers);
    }
}

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

Вы можете использовать следующую перегрузку, позволяющую указать действие и контроллер:

@Html.ActionLink("Back", "Index", "Supplier")
0 голосов
/ 22 декабря 2011

Проблема была в моей конфигурации маршрутизации.Выглядело это так:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", 
            "{controller}/{action}/{id}", 
            new { controller = "Supplier", action = "Index", id = UrlParameter.Optional } 
        );
    }

Если я заменю контроллер по умолчанию в методе MapRoute на что-то другое, все работает нормально.Я не знаю, почему это должно быть проблемой, и буду благодарен за комментарии.

...