2011-12-22 69 views
0

我有一个.Net MVC 3-应用程序,并有一个名为SupplierController的控制器,它负责管理供应商的两个视图(页面),一个列表和一个编辑视图。 在列表视图中,我创建编辑链接这样的:创建链接到主页(.Net,MVC)

@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:/ /本地主机)。我想获得列表页面,该页面具有url http:// localhost/Supplier。我摸索出迄今最好的是

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

但是这会导致访问http://本地主机/供应商/索引/供应商,这不是我想要的。

我SupplierController:

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

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

回答

0

的问题是在我的路由配置。它看起来像这样:

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-method中的默认控制器更改为别的,所有工作都正常。 我不知道为什么这应该是一个问题,并会感谢评论。

2

您可以使用下面的重载允许您指定的动作和控制器:

@Html.ActionLink("Back", "Index", "Supplier") 
+0

这也导致到根网址(HTTP是:localhost):( – AGuyCalledGerald 2011-12-22 11:42:19

+0

@扬FrederikCarl,好,然后用你希望控制器和动作如果您已经定义在默认的路由定义供应商控制器和索引操作作为默认值,那么它们将被跳过是正常的,'/'将与'/ supplier'完全相同,并且与'/ supplier/index' =>完全相同,它将会执行相同的控制器操作,因此它不会'如果你想使用不同的控制器/动作,只需指定它们 – 2011-12-22 11:44:25

+0

但是,如果我使用供应商控制器(在我的问题中发布),它是否不返回视图“列表”? – AGuyCalledGerald 2011-12-22 11:59:36