如果CMS中不存在slug,则在Razor Pages中的公共异步任务OnGet(string slug)中返回404

时间:2018-10-25 15:15:10

标签: razor-pages

我有以下页面模型方法:

public class CarModel : PageModel
    {
public Car Car { get; private set; }

public async Task OnGet(string slug)
        {



            var client = clientManager.GetClient();


            var carPages = await client.GetBySlugAsync();

            CarPages= carPages.Items[0];

// if carPages.Items is null, out of range, or if CarPages is null, then return a 404

        }
}

剃刀页:

@page "/{slug}"
@model CarModel
@{
    ViewData["Title"] = "Some title";
}

<div>Some markup</div>

如果我在CMS中不存在的浏览器中输入一个标签,那么我希望OnGet方法返回404。我该怎么做(最佳实践示例)?

(当前,如果我在浏览器中输入了不存在的子弹,请按回车键,我会收到服务器错误)

在Microsoft文档中未找到有关Razor Pages的任何示例。

1 个答案:

答案 0 :(得分:0)

使用返回NotFound的{​​{1}}方法:

NotFoundResult

您将需要更改var carPages = await client.GetBySlugAsync(); if(!carPages.Any()) // or whatever the appropriate test is for your data type here { return NotFound(); } else { return Page(); } 方法的签名以返回OnGet

IActionResult

详细了解可用的public async Task<IActionResult> OnGet(string slug) 类型范围:https://www.learnrazorpages.com/razor-pages/action-results