ASP.NET WebForms FriendlyUrlSegments 不包含采用 0 个参数的构造函数
Posted
技术标签:
【中文标题】ASP.NET WebForms FriendlyUrlSegments 不包含采用 0 个参数的构造函数【英文标题】:ASP.NET WebForms FriendlyUrlSegments does not contain a constructor that takes 0 arguments 【发布时间】:2013-03-10 14:18:45 【问题描述】:我在 ASP.NET 4.5 WebForms 中使用 FriendlyUrls 做一个简单的测试,Foo.aspx 变成 /Foo/(它有效)。 当我尝试使用 FriendlyUrlSegments 属性将 id 从 URL 获取到控件时,我收到此错误:
'Microsoft.AspNet.FriendlyUrls.ModelBinding.FriendlyUrlSegmentsAttribute' does not contain a constructor that takes 0 arguments
有 [FriendlyUrlSegments] 错误的方法:
public Person GetPerson([FriendlyUrlSegments]int? id)
return People.Find(p => p.Id == id);
我已尝试从 NuGet 更新 FriendlyUrls。
【问题讨论】:
【参考方案1】:这样写你的方法:
public Person GetPerson([FriendlyUrlSegments(0)] int? id)
return People.Find(p => p.Id == id);
[FriendlyUrlSegments]
属性使用 URL 中页面之后的零索引段映射。例如,如果您请求 /Hello/foo/bar/... 而您的页面是 Hello.aspx,那么 [FriendlyUrlSegments(0)]
将映射到“foo”,[FriendlyUrlSegments(1)]
将映射到“bar”,依此类推。
【讨论】:
【参考方案2】:我认为您所做的方式是模型绑定,而不是从 url 获取信息。 我读了这个article
scott hanselman 和我试了一下。我和你有同样的问题。我还以为[FriendlyUrlSegments]int? id
用于模型绑定。而不是我这样做:
var id=Request.GetFriendlyUrlSegments()[0];
yourmethod(id);
如果我错了,请随时纠正我! 希望对您有所帮助。
【讨论】:
以上是关于ASP.NET WebForms FriendlyUrlSegments 不包含采用 0 个参数的构造函数的主要内容,如果未能解决你的问题,请参考以下文章
下周要搞大事情(ASP.NET Core & WebForms)!
ASP.NET WebForms FriendlyUrlSegments 不包含采用 0 个参数的构造函数
在 ASP.NET 4.5 WebForms 中通过 bundle.config 与 BundleConfig.cs 捆绑资源