C# 如何解决Razor Pages错误;CS0103名称';Json';在当前上下文中不存在;?

C# 如何解决Razor Pages错误;CS0103名称';Json';在当前上下文中不存在;?,c#,asp.net,json,razor-pages,C#,Asp.net,Json,Razor Pages,我使用的是Razor页面(不是MVC),在返回语句中不断出现上述错误。有一个类似的问题与MVC模型有关,但答案是将类更改为“Controller”。当我尝试这样做的时候,页面相关的东西就会断开。有什么建议吗 public class VehicleInfoPageModel : PageModel { public SelectList ModelNameSL { get; set; } public JsonResult PopulateModelDropDownLi

我使用的是Razor页面(不是MVC),在返回语句中不断出现上述错误。有一个类似的问题与MVC模型有关,但答案是将类更改为“Controller”。当我尝试这样做的时候,页面相关的东西就会断开。有什么建议吗

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);
    }

您尝试使用从名称空间派生的
Json()
方法,它们都是不同的名称空间。您应该使用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用于MVC/WebAPI应用程序,而不是Razor Pages应用程序,因此它没有
JSON
helper函数。只需使用
返回新的JsonResult(ModelNameSL)谢谢你的解释!这就解决了问题。