Jak zmusić MVC action do powrotu 404
Mam akcję, która trwa w ciągu znaków, który jest używany do pobierania niektórych danych. Jeśli ten ciąg spowoduje, że żadne dane nie zostaną zwrócone (może dlatego, że zostały usunięte), chcę zwrócić 404 i wyświetlić stronę błędu.
Obecnie używam tylko return specjalnego widoku, który wyświetla przyjazny komunikat o błędzie specyficzny dla tej akcji, mówiący, że element nie został znaleziony. Działa to dobrze, ale najlepiej byłoby zwrócić kod statusu 404, aby Wyszukiwarki wiedziały, że ta treść nie jest już istnieje i może usunąć go z wyników wyszukiwania.
Jaki jest najlepszy sposób na to?
Jest to tak proste, jak ustawienie odpowiedzi.StatusCode = 404?
12 answers
Istnieje wiele sposobów, aby to zrobić,
- Masz rację w kodzie aspx można go przypisać w określony sposób
throw new HttpException(404, "Some description");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-29 20:33:42
W ASP.NET MVC 3 i wyżej możesz zwrócić HttpNotFoundResult z kontrolera.
return new HttpNotFoundResult("optional description");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-29 20:30:11
W MVC 4 i wyżej możesz użyć wbudowanych metod pomocniczych HttpNotFound
:
if (notWhatIExpected)
{
return HttpNotFound();
}
Lub
if (notWhatIExpected)
{
return HttpNotFound("I did not find message goes here");
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-10 10:37:13
Kod:
if (id == null)
{
throw new HttpException(404, "Your error message");//RedirectTo NoFoundPage
}
Www.config
<customErrors mode="On">
<error statusCode="404" redirect="/Home/NotFound" />
</customErrors>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-18 17:52:34
Użyłem tego:
Response.StatusCode = 404;
return null;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-19 21:46:20
In NerdDinner eg. Try it
public ActionResult Details(int? id) {
if (id == null) {
return new FileNotFoundResult { Message = "No Dinner found due to invalid dinner id" };
}
...
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-01 12:40:52
Jeśli pracujesz z. Net Core, możesz return NotFound()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-13 21:04:19
Żaden z powyższych przykładów nie zadziałał dla mnie, dopóki nie dodałem linii środkowej poniżej:
public ActionResult FourOhFour()
{
Response.StatusCode = 404;
Response.TrySkipIisCustomErrors = true; // this line made it work
return View();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-25 05:48:30
Używam:
Response.Status = "404 NotFound";
To mi działa: -)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-01 09:26:33
W. NET Core 1.1:
return new NotFoundObjectResult(null);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-16 11:04:59
Możesz również zrobić:
if (response.Data.IsPresent == false)
{
return StatusCode(HttpStatusCode.NoContent);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-11 15:07:30
Wypróbuj poniższy kod demo:
public ActionResult Test()
{
return new HttpStatusCodeResult (404,"Not found");
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-05 00:41:04