首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenRasta路由约束

OpenRasta路由约束
EN

Stack Overflow用户
提问于 2011-08-13 12:01:53
回答 1查看 189关注 0票数 0

如果我想通过/ person /1和/Person/Blair得到一个Person,我该怎么做呢?

配置类:

代码语言:javascript
复制
public class RastaConfiguration : IConfigurationSource
{
    public void Configure()
    {
        using (OpenRastaConfiguration.Manual)
        {

            ResourceSpace.Has.ResourcesOfType<List<Subject>>()
                .AtUri("/Subject")
                .HandledBy<SubjectHandler>()
                .TranscodedBy<JsonDataContractCodec>();

            ResourceSpace.Has.ResourcesOfType<List<Person>>()
                .AtUri("/Person").And.AtUri("/Person/{name}")
                .HandledBy<PersonHandler>()
                .TranscodedBy<JsonDataContractCodec>();

            ResourceSpace.Has.ResourcesOfType<Person>()
                .AtUri("/Person/{id}")
                .HandledBy<PersonHandler>()
                .TranscodedBy<JsonDataContractCodec>();
        }
    }
}

和处理程序

代码语言:javascript
复制
 public class PersonHandler
{

    private static readonly List<Person> People = new List<Person>
                                             {
                                                 new Person {Id = 1, Name = "Blair Davidson", Subjects = new List<Subject>
                                                                                                  {
                                                                                                      new Subject{ Name = "Maths"}
                                                                                                  }},
                                                 new Person {Id = 2, Name = "Esther Hew", Subjects = new List<Subject>
                                                                                                  {
                                                                                                      new Subject{ Name = "Chinese"}
                                                                                                  }}
                                             };

    public IEnumerable<Person> Get()
    {
        return People;
    }

    public IEnumerable<Person> GetByName(string name)
    {
        return People.Where(x => x.Name.Contains(name)).ToList();
    }

    public Person GetById(int id)
    {
        return People.SingleOrDefault(x => x.Id == id);
    }

    public OperationResult Post(Person person)
    {
        People.Add(person);

        return new OperationResult.Created
                   {
                       ResponseResource = person
                   };
    }


}

有没有办法使用像asp.net mvc这样的约束?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-15 18:54:23

您将为URI指定一个名称(使用配置中的命名方法),并使用HttpOperation属性将该URI绑定到的方法上出现相同的名称,并将ForUriName属性设置为您在注册中拥有的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7048486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档