2011-03-01 110 views
0

我刚刚更新了WebForms/ASP.NET MVC 3混合应用程序以使用mvc3和剃须刀视图引擎。一切似乎工作正常但是,现在当我使用Html.ActionLink()我的链接没有得到正确解决或什么?WebForms/ASP.NET MVC 3应用程序

例如:

@Html.ActionLink("Create New", "Create") 

产生一个锚定标记是这样的:

<a href="/?action=Create&amp;controller=Network">Create New</a> 

代替我所期待的:

<a href="/Network/Create">Create New</a> 

这里是控制器的操作方法:

public class NetworkController : Controller { 
    public ActionResult Create() { 
     return View(new Network()); 
    } 
} 

任何建议都会很棒。谢谢。

+0

您能否显示您的路由配置,因为这可能与它有关。 – 2011-03-01 07:21:54

+0

你能否包含你的路由配置?每个出现或遇到此问题的人都没有提供足够的信息来查看他们是否有同样的问题。这个问题(目前的形式)对整个社区来说是无用的。 – 2011-06-05 14:25:18

回答

1

正如其他人所说,有绝对的东西了你的路由配置。

路由引擎有两件事:它将URL解析为一组路径值(当您在浏览器中键入/ Network/Create并发生更正操作时会发生什么),并解析了一组到URL的路由值(这是在您执行操作时发生的情况在动作链接中生成URL)。路线按顺序测试,并且第一个声明比赛胜利,这意味着如果你没有正确设置它们,你并不总是具有相同的双向结果。

推荐做路线测试w/MVCContrib路线助手,这可能会帮助您缩小问题范围。另外,像@Chad Moran所说的那样,依赖“环境”路由值通常是一种不好的做法(或者至少是不可靠的),如果您选择ActionLink的更明确的重载之一,那么您也可能获得更好的结果。

0

您是否确定所有设置都正确的路由?这似乎表明没有路线被发现,其中controlleraction是足够的路线。

+0

如果我输入/网络/创建我得到正确的创建表单。 – 2011-03-01 01:40:53

+0

复制并粘贴路由注册(默认情况下,这将在您的global.asax中) – smartcaveman 2011-03-01 01:58:26

0

由于您没有提供基于上下文的方法的Controller参数。这个调用是否在另一个控制器的上下文中?

尝试......

@ Html.ActionLink( “新建”, “创建”, “网络”)