2015-05-08 16 views
7

ASP.NET MVC5'de JsonResult dönüş tipinde bir denetleyicim var.JsonResult Denetleyicisinden nasıl 404 dönmeliyim?

Parametrelere bağlı olarak, 404 değerini döndürmek istiyorum; çünkü bu, kullanıcının varolmayan veriler talep ettiğini açıklıyor.

throw new HttpException(404, "message") olabilir, ancak bu return HttpNotFound() sözdizimi verildiğinde bu kirli görünüyor. Bu çalışma tabii ki çalışmıyor çünkü HttpNotFoundResultJsonResult

JsonResult denetleyici yöntemlerinden nasıl temizlemeli?

cevap

10

Tüm işlemleriniz yalnızca ActionResult dönüş değerlerine sahip olmalıdır. Bu, JsonResult veya HttpNotFoundResult ya da geçerli bir sonuç türü döndürmenize olanak tanır.

public ActionResult Foo() 
{ 
    if (!foos.Any()) 
    { 
     return new HttpNotFoundResult(); 
    } 

    return Json(foos, JsonRequestBehavior.AllowGet); 
} 
+5

"Olmalı" derken dikkatli olmalıyım çünkü bu gerçekten bir stil ve zorunluluk meselesi. Tüm eylemlerin geri döndürülmesi ActionResult öğesinin döndürülmesi, tüm yöntemleri 'object' döndürmesi gerektiğini tartışmak gibidir. – Shoe