在WebApi中传递Enum类型的最佳做法是什么

时间:2017-09-04 14:23:48

标签: c# web-services asp.net-web-api

我们有一个枚举类型

public enum Country
        {
            UK = 1,
            US = 2,
            Japan = 4,
            China = 8,
            Germany = 16,
        }

我们想在URL参数中传递枚举,然后webapi可以根据国家/地区搜索结果

有时,我们允许将国家/地区合并为Country.UK | Country.China | Country.Germany(因此数字为25)

在这种情况下,传递枚举类型的最佳做法是什么?我们应该通过号码,例如url上的country = 25(不是用户友好的)或者传递url类似于country = UK& country = China& country = Germany,其中url将非常长且丑陋....

2 个答案:

答案 0 :(得分:0)

在创建仅将国家/地区名称添加到网址的网址时使用Country.Us

return RedirectToAction("SomeAction", "Controller", new { username = user.UserName, country = Country.Us });

这会生成以下网址: http://somesite.com/Controller/SomeAction?username=username&country=US

这对SEO和用户的观点有好处。而不是country=2并不意味着什么。

收到请求时:

    [HttpGet]
    public ActionResult SomeAction(string username, Country? country)
    {

如果您想将多个国家/地区传递给某个操作,我建议您仍然按名称发送这些国家/地区。但是,我会将名称更改为countries

http://somesite.com/Controller/SomeAction?username=username&countries=US&countries=UK

    [HttpGet]
    public ActionResult SomeAction(string username, Country[] country)
    {

答案 1 :(得分:0)

枚举将用","解析不是" |"。 用function people(name,age){ this.name= name; this.age = age; this.yearsuntilretire = yearsleft; } function yearsleft(){ var numyears = 65 - this.age; return numyears; } var sip = new people("manda arpitha",19); document.write(sip.yearsuntilretire());标记你的枚举并使用","在您的网址中。

Flags

网址:" ControllerMethode的路径" + [Flags] public enum Country { UK = 1, US = 2, Japan = 4, China = 8, Germany = 16, }