C# ASP.NET MVC测试版路由、控制器操作、参数和操作链接……将所有这些放在一起

C# ASP.NET MVC测试版路由、控制器操作、参数和操作链接……将所有这些放在一起,c#,asp.net-mvc,C#,Asp.net Mvc,我在使用ASP.NET MVC Beta版时遇到了一些问题,我想让路由、控制器动作、控制器动作上的参数和Html.ActionLinks一起工作。我有一个正在开发的应用程序,其中有一个名为Plot的模型对象和一个相应的PlotController。当用户创建新的绘图对象时,会生成URL友好名称()。然后我想生成一个属于用户的图的“列表”,每个图都是一个链接,可以引导用户查看该图的详细信息。我希望该链接的URL如下所示:。我试图用下面的代码实现这一点,但它似乎不起作用,而且我似乎找不到任何好的示例

我在使用ASP.NET MVC Beta版时遇到了一些问题,我想让路由、控制器动作、控制器动作上的参数和Html.ActionLinks一起工作。我有一个正在开发的应用程序,其中有一个名为Plot的模型对象和一个相应的PlotController。当用户创建新的绘图对象时,会生成URL友好名称()。然后我想生成一个属于用户的图的“列表”,每个图都是一个链接,可以引导用户查看该图的详细信息。我希望该链接的URL如下所示:。我试图用下面的代码实现这一点,但它似乎不起作用,而且我似乎找不到任何好的示例来说明如何使所有这些工作协同工作

我的路线定义:

routes.MapRoute( "PlotByName", "plot/{name}", new { controller = "Plot", action = "ViewDetails" } );
我的控制人行动:

[Authorize]
public ActionResult ViewDetails( string plotName )
{
    ViewData["SelectedPlot"] = from p in CurrentUser.Plots where p.UrlFriendlyName == plotName select p;
    return View();
}
至于ActionLink,我不确定生成合适的URL时会是什么样子


任何帮助都将不胜感激。

答案非常简单:您必须在“ActionLink”中提供足够的值,以满足您的路线要求。例如:

<%= Html.ActionLink("Click Here", "ViewDetails", "Plot", new { name="my-plot-name" }, null)%>

如果省略ActionLink方法的“name=”部分,RouteEngine将不会认为此链接足够好,无法“匹配”。。。因此,它将转到默认路径


上面的代码将使URL看起来像您想要的那样。

答案很简单:您必须在“ActionLink”中提供足够的值,以实现您的路线。例如:

<%= Html.ActionLink("Click Here", "ViewDetails", "Plot", new { name="my-plot-name" }, null)%>

如果省略ActionLink方法的“name=”部分,RouteEngine将不会认为此链接足够好,无法“匹配”。。。因此,它将转到默认路径

上面的代码将使URL看起来符合您的要求。

这段代码如何修复?(注意名称=null,附在第4行末尾……)

这个应该改名。。(请注意,plotName已重命名为name)

这有帮助吗?

这个代码修复程序怎么样?(注意名称=null,附在第4行末尾……)

这个应该改名。。(请注意,plotName已重命名为name)

这有用吗

public ActionResult ViewDetails(string name ) { ... }