Asp.net mvc 3 Razor无法轻松处理强类型Html.ActionLink?

Asp.net mvc 3 Razor无法轻松处理强类型Html.ActionLink?,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,各位 我们正在尝试使用如下所示的强类型操作链接方法: Html.ActionLink<HomeController> ... Line 101: #line 13 "C:\dev\TheNetwork\POC\Web\Views\Policy\Edit.cshtml" Line 102: Write(Html.ActionLink); Line 103: Line 104: Line 105: #

各位

我们正在尝试使用如下所示的强类型操作链接方法:

Html.ActionLink<HomeController>
...
Line 101:              #line 13 "C:\dev\TheNetwork\POC\Web\Views\Policy\Edit.cshtml"
Line 102:  Write(Html.ActionLink);
Line 103:  
Line 104:              
Line 105:              #line default
Line 106:              #line hidden
Line 107:  WriteLiteral("<PolicySectionController>(c => c.Edit(null), "New\")\r\n\r\n\r\n\r\n");
如果您查看编译后的代码,这是因为Razor没有像您所期望的那样解析该语句。已编译的源代码,从包含以下行的错误中可以看出:

Html.ActionLink<HomeController>
...
Line 101:              #line 13 "C:\dev\TheNetwork\POC\Web\Views\Policy\Edit.cshtml"
Line 102:  Write(Html.ActionLink);
Line 103:  
Line 104:              
Line 105:              #line default
Line 106:              #line hidden
Line 107:  WriteLiteral("<PolicySectionController>(c => c.Edit(null), "New\")\r\n\r\n\r\n\r\n");
。。。
第101行:#第13行“C:\dev\TheNetwork\POC\Web\Views\Policy\Edit.cshtml”
第102行:编写(Html.ActionLink);
第103行:
第104行:
第105行:#行默认值
第106行:#隐藏行
第107行:writeleral((c=>c.Edit(null),“New\”)\r\n\r\n\r\n);

为了简洁起见省略了很多内容:)正如您所看到的,它在“上拆分它是的,为了使用泛型方法,您需要使用parens对表达式进行转义。这是否有效:

@(Html.ActionLink<PolicySectionController>(c => c.Edit(null), "New"))
@(Html.ActionLink(c=>c.Edit(null),“New”))
这对我很有用:

@using MyProjectNamespace.Controllers;
@using Microsoft.Web.Mvc; // MVC Futures
@{
    ViewBag.Title = "Index";
}
<h1>Index</h1>
@(Html.ActionLink<FooController>(f => f.Index(), "Go (Strongly Typed)"))
@使用MyProjectNamespace.Controllers;
@使用Microsoft.Web.Mvc;//Mvc期货
@{
ViewBag.Title=“Index”;
}
指数
@(Html.ActionLink(f=>f.Index(),“Go(强类型)”)
(两个“@using”语句都是强制性的,否则它就不起作用了)

我想你也可以这样做:

@ActionLink((foodcontroller c)=>c.Edit(null),“New”)

是的,这很有效!仍然不理想,但比我的混乱要好,谢谢:)不幸的是(在这个场景中)Razor使用了
顺便说一句,示例中的
null
是多余的,下面的方法同样有效
@(Html.ActionLink(c=>c.Edit(),“New”))
@Michael Teper事实上,在我的情况下,null是必需的,因为我的编辑操作没有不带任何内容的重载,而且我没有默认参数Doesn在MVC4中对我不起作用。我现在正在检查Html.ActionLink重载,找不到任何通用的NOE。有什么想法吗?
@using MyProjectNamespace.Controllers;
@using Microsoft.Web.Mvc; // MVC Futures
@{
    ViewBag.Title = "Index";
}
<h1>Index</h1>
@(Html.ActionLink<FooController>(f => f.Index(), "Go (Strongly Typed)"))