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 MVC 与 WebForms 相结合

下周要搞大事情(ASP.NET Core & WebForms)!

Asp.net WebForms 概述

ASP.NET WebForms FriendlyUrlSegments 不包含采用 0 个参数的构造函数

在 ASP.NET 4.5 WebForms 中通过 bundle.config 与 BundleConfig.cs 捆绑资源

基础版限时免费致敬WebForms,ASP.NET Core也能这么玩!