2010-01-12 28 views

Odpowiedz

1

Nie "przekonwertuje" go, ale oba będą miały taki sam skutek, jeśli chodzi o użytkownika. Żądanie zostanie wysłane, ale żadna odpowiedź nie wróci do klienta.

Osobiście uważam, że należy wysłać odpowiedź z powrotem do klienta, nawet jeśli po prostu napisz kontynuację lub sukces bezpośrednio do strumienia odpowiedzi. Nawet JSON true lub pusty dokument XML jest lepszy niż nic.

+1

Dlaczego tutejsi downvotes? Przeciwstawione imieniem rozumu; bardzo dobry punkt o zawsze zwracaniu czegoś. – ProfK

+8

Podejrzewam, że przyczyną upadku (ja nie) jest to, że odpowiedź "nie" powraca. Odpowiedź 200 OK. Ciało odpowiedzi jest puste. Myślę, że przy operacjach ajax rozsądne jest używanie kodów stanu HTTP do przesyłania wyników operacji. 200 OK, 500 błędów, 403 zabronionych itp. Ciało nie zawsze jest konieczne. – MarkPflug

3

Wydaje się więc, sprawdź source code of ControllerActionInvoker.cs. Nie zweryfikowałem tego, ale logika mówi mi, że return void ustawi actionReturnValue na wartość null, więc generowany jest EmptyResult. Jest to najnowszy kod źródłowy, nie sprawdzono źródła dla ASP.net MVC 1.0.

protected virtual ActionResult CreateActionResult(ControllerContext controllerContext, ActionDescriptor actionDescriptor, object actionReturnValue) { 
    if (actionReturnValue == null) { 
     return new EmptyResult(); 
    } 

    ActionResult actionResult = (actionReturnValue as ActionResult) ?? 
     new ContentResult { Content = Convert.ToString(actionReturnValue, CultureInfo.InvariantCulture) }; 
    return actionResult; 
} 
Powiązane problemy