Ich bin neu für die Verwendung von ASP Net Web API. Ich möchte UploadDocument-Funktion in meiner Web-API erstellen. Also, ich erschaffe diesen Weg.aspnet web api wie Validierung mit ModelState in mehrteiligen Form Daten?
Von Client-
api.post('vendor/UploadDocument', formData, { headers: { 'Content-Type': 'multipart/form-data' } })
-Controller
public class VendorController : ApiController {
[HttpPost]
public HttpResponseMessage UploadDocument()
{
try
{
if (!Request.Content.IsMimeMultipartContent())
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
var request = HttpContext.Current.Request;
var model = new UploadDocumentViewModel();
model.field1 = request.Form["field1"];
model.field2 = request.Form["field2"];
model.Document = request.Files["Document"];
if (ModelState.IsValid)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
else //ModelState is not valid
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
catch (Exception exception)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
}
}
Modell
public class UploadDocumentViewModel
{
[Required]
public string field1 { get; set; }
[Required]
public int field2 { get; set; }
[Required]
public HttpPostedFile Document { get; set; }
}
Mein Problem ist, in Controller Model immer leer. Ich habe versucht, Code
Validate(model);
if (ModelState.IsValid)...
hinzufügen, aber es hat nicht zu arbeiten. kann jemand eine Idee für die Validierung von Modelldatenanmerkungen in mehrteiligen Formulardaten haben?
Ihre POST-Methode enthält kein Modell, daher gibt es nichts zu validieren. Machen Sie Ihre Methode 'UploadDocument (UploadDocumentViewModel model)' und sie wird mit den geposteten Werten gebunden (als eine Randnotiz kann ein 'int' nicht' null' sein - es ist standardmäßig erforderlich, so dass Ihr '[Required]' Attribut unnötig ist du wolltest eine spezifische Fehlermeldung) –