1

我正在用 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。

4

2 回答 2

2

像这样写你的方法:

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”,等等。

于 2013-03-22T18:27:16.813 回答
0

我认为您所做的方式是模型绑定,而不是从 url 获取信息。我读了这篇文章

斯科特汉塞尔曼和我试试。我和你有同样的问题。我想[FriendlyUrlSegments]int? id

用于模型绑定。而不是我这样做:

var id=Request.GetFriendlyUrlSegments()[0];
yourmethod(id);

如果我错了,请随时纠正我!希望这有帮助。

于 2013-07-23T08:45:18.723 回答