Как устранить ошибку Razor Pages «CS0103 Имя« Json »не существует в текущем контексте»? - PullRequest
0 голосов
/ 24 октября 2018

Я использую Razor Pages (не MVC) и продолжаю получать вышеуказанную ошибку в операторе возврата.Существует аналогичный вопрос, касающийся модели MVC, но ответом на него является изменение класса на «Контроллер».Когда я пытаюсь это сделать, связанные со страницей вещи ломаютсяЕсть предложения?

public class VehicleInfoPageModel : PageModel
{        
    public SelectList ModelNameSL { get; set; }

public JsonResult PopulateModelDropDownList(StockBook.Models.StockBookContext _context,
        int selectedMakeID,
        object selectedModelID = null)
    {
        var ModelIDsQuery = from m in _context.VehicleModel
                            orderby m.ModelID // Sort by ID.
                            where m.MakeID == selectedMakeID
                            select m;

        ModelNameSL = new SelectList(ModelIDsQuery.AsNoTracking(),
                    "ModelID", "ModelName", selectedModelID);
        return Json(ModelNameSL);
    }

1 Ответ

0 голосов
/ 24 октября 2018

Вы пытались использовать метод Json(), который получен из System.Web.Mvc.JsonResult или System.Web.Http.ApiController.JsonResult вместо Microsoft.AspNetCore.Mvc.JsonResult пространства имен, ониВы все разные пространства имен.Вы должны использовать конструктор Microsoft.AspNetCore.Mvc.JsonResult для создания строки JSON:

public JsonResult PopulateModelDropDownList(StockBook.Models.StockBookContext _context, int selectedMakeID, object selectedModelID = null)
{
    var ModelIDsQuery = from m in _context.VehicleModel
                        orderby m.ModelID // Sort by ID.
                        where m.MakeID == selectedMakeID
                        select m;

    ModelNameSL = new SelectList(ModelIDsQuery.AsNoTracking(),
                "ModelID", "ModelName", selectedModelID);

    // return JSON string
    return new JsonResult(ModelNameSL);
}

Ссылка: Работа с JSON на страницах Razor

...