This repository was archived by the owner on Dec 14, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Consider changing JsonResult's behavior when you provide a formatter #1370
Comments
The explicitly specified formatter should always be used. The current behavior of using the specified formatter as a fallback from content negotiation is unexpected and incorrect. |
rynowak
added a commit
that referenced
this issue
Oct 29, 2014
The change here is to always use the provided formatter, instead of using it as a fallback. This is much less surprising for users. There are some other subtle changes here and cleanup of the tests, as well as documentation additions. The primary change is that we still want to run 'select' on a formatter even if it's the only one. This allows us to choose a content type based on the accept header. In the case of a user-provided formatter, we'll try to honor the best possible combination of Accept and specified ContentTypes (specified ContentTypes win if there's a conflict). If nothing works, we'll still run the user-provided formatter and let it decide what to do. In the case of the default (formatters from options) we do conneg, and if there's a conflict, fall back to a global (from services) JsonOutputFormatter - we let it decide what to do. This should leave us with a defined and tested behavior for all cases.
rynowak
added a commit
that referenced
this issue
Oct 30, 2014
The change here is to always use the provided formatter, instead of using it as a fallback. This is much less surprising for users. There are some other subtle changes here and cleanup of the tests, as well as documentation additions. The primary change is that we still want to run 'select' on a formatter even if it's the only one. This allows us to choose a content type based on the accept header. In the case of a user-provided formatter, we'll try to honor the best possible combination of Accept and specified ContentTypes (specified ContentTypes win if there's a conflict). If nothing works, we'll still run the user-provided formatter and let it decide what to do. In the case of the default (formatters from options) we do conneg, and if there's a conflict, fall back to a global (from services) JsonOutputFormatter - we let it decide what to do. This should leave us with a defined and tested behavior for all cases.
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
This code is a bit of a trap.
I new up a formatter, and give it the settings and and encoding a I want for this specific action, and then provide it to
JsonResult
. It will be ignored if I have a formatter registered in options that handles json (the default).It turns out I have no way to specify a settings/formatter/encoding for a result ad-hoc unless I drop down to use objectresult.
The text was updated successfully, but these errors were encountered: