Seperti ini misalnya:
public HttpResponseMessage Post(Person person)
{
if (ModelState.IsValid)
{
PersonDB.Add(person);
return Request.CreateResponse(HttpStatusCode.Created, person);
}
else
{
// the code below should probably be refactored into a GetModelErrors
// method on your BaseApiController or something like that
var errors = new List<string>();
foreach (var state in ModelState)
{
foreach (var error in state.Value.Errors)
{
errors.Add(error.ErrorMessage);
}
}
return Request.CreateResponse(HttpStatusCode.Forbidden, errors);
}
}
Ini akan mengembalikan respons seperti ini (dengan asumsi JSON, tetapi prinsip dasar yang sama untuk XML):
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
(some headers removed here)
["A value is required.","The field First is required.","Some custom errorm essage."]
Anda tentu saja dapat membuat objek / daftar kesalahan sesuka Anda, misalnya menambahkan nama bidang, id bidang, dll.
Meskipun itu adalah panggilan Ajax "satu arah" seperti POST entitas baru, Anda masih harus mengembalikan sesuatu ke pemanggil - sesuatu yang menunjukkan apakah permintaan tersebut berhasil atau tidak. Bayangkan sebuah situs di mana pengguna Anda akan menambahkan beberapa info tentang diri mereka sendiri melalui permintaan AJAX POST. Bagaimana jika informasi yang mereka coba masukkan tidak valid - bagaimana mereka tahu jika tindakan Simpan berhasil atau tidak?
Cara terbaik untuk melakukan ini adalah menggunakan Kode Status HTTP Lama yang Baik seperti 200 OK
dan seterusnya. Dengan cara itu JavaScript Anda dapat menangani kegagalan dengan benar menggunakan callback yang benar (kesalahan, sukses, dll).
Berikut tutorial yang bagus tentang versi yang lebih maju dari metode ini, menggunakan ActionFilter dan jQuery: http://asp.net/web-api/videos/getting-started/custom-validation
System.Net.Http
,System.Net
System.Web.Http.Controllers
danSystem.Web.Http.Filters
.