Не може да се дефинира атрибутът „Име“ на метода WebAPI2

В уроци за WebAPI2, атрибутът Name на маршрут е ясно дефиниран по следния начин:

public class BooksController : ApiController
{
    [Route("api/books/{id}", Name="GetBookById")]
    public BookDto GetBook(int id) 
    {
        // Implementation not shown...
    }
}

Въпреки това, когато опитам това в моя собствен код (макар и VB), мога да получа грешка:

Типът „Име“ не е дефиниран

Има ли нещо нередно в моя подход?

Подробности за VS грешка


person EvilDr    schedule 19.08.2014    source източник
comment
Опитайте просто да го премахнете, afaik това е просто име за маршрута и не се нуждае от такова, за да работи.   -  person matt_lethargic    schedule 19.08.2014
comment
Само ако... :-/ Имам нужда от Името, за да създам динамично URI обратно към метода другаде   -  person EvilDr    schedule 19.08.2014
comment
Хаха, използвай C# като всички нас!! Съжалявам, това не помага, не знам vb   -  person matt_lethargic    schedule 19.08.2014


Отговори (2)


Intellisense на помощ!! Не използвайте името на свойството Name:

<Route("test/{cid}", "nameofroute", 0)>
Public Function [Get](cid As Int32)

End Function
person matt_lethargic    schedule 19.08.2014
comment
Добра работа. Благодаря. И да, приемам мнението ви за C#. Иска ми се да го бях избрал преди десет години, когато започнах с ASP.NET, но класическите ми ASP умения бяха VB, така че преходът беше лесен. Все пак е в списъка ми със задачи... - person EvilDr; 19.08.2014

Синтаксисът, който използвате, позволява множество атрибути. Това кара компилатора да мисли, че искате да използвате NameAttribute, което не съществува.

Премахнете затварящата скоба след низа на маршрута и използвайте „оператора за присвояване на паскал“ :=:

<Route("api/books/{id}", Name:="GetBookById")>

Както е показано на Атрибути (C# и Visual Basic).

person CodeCaster    schedule 19.08.2014
comment
Отлично, благодаря. Избрах обаче да приема отговора на Мат, тъй като той публикува няколко секунди по-рано. - person EvilDr; 19.08.2014