Ahmed Beh Elgzar Ответов: 1

Вызов метода API из контроллера MVC


это мой метод в API
<pre>//   Function to Load Lvl Info
        public HttpResponseMessage getLevelInfo(int GameID,int LvlNO)
        {
            Tbl_FrequancyGames Tbl_FrequancyGames = (from u in (db.Tbl_FrequancyGames) where (u.GameID == GameID && u.LevelNo==LvlNO ) select u).FirstOrDefault();

            
                return Request.CreateResponse(HttpStatusCode.OK, Tbl_FrequancyGames);
            
        }


Что я уже пробовал:

Как я могу вызвать его из контроллера MVC

1 Ответов

Рейтинг:
9

Dave Kreskowiak

Поскольку этот метод возвращает HTML-ответ, вы действительно не можете вызвать его из другого метода MVC. Ну, если только вы не собираетесь использовать HTML-ответ, но это действительно не имеет никакого полезного смысла.

Ответ на этот вопрос очень прост. Разделите этот метод на два. Один из них представлен как API, который вызывает метод для получения данных и форматирует их для HTML-ответа, а другой-просто захватывает данные и возвращает их.

public HttpResponseMessage getLevelInfo(int GameId, int LvlNO)
{
    var data = GetLevelInfoData(GameId, LvlNO);

    return Request.CreateResponse(HttpStatusCode.OK, data);
}

internal Tbl_FrequancyGames GetLevelInfoData(int GameId, int LevelNo)
{
    Tbl_FrequancyGames Tbl_FrequancyGames = (from u in (db.Tbl_FrequancyGames) where (u.GameID == GameID && u.LevelNo==LevelNo ) select u).FirstOrDefault();

    return Tbl_FrequancyGames;
}


Ahmed Beh Elgzar

это нормально, но как я могу вызвать его в своем контроллере ???

Dave Kreskowiak

МММ...что? Вы вызываете его так же, как и любой другой метод, передавая соответствующие параметры:

    var result = GetLevelInfoData(gameId, levelNo);