質問:
呼び出されたアクションが期待するパラメーターのタイプを知ることは可能ですか? たとえば、次のようなものがありaction
ます。
[TestCustomAttr]
public ActionResult TestAction(int a, string b)
{
...
次のようにTestCustomAttr
定義されます。
public class TestCustomAttr : System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
...
TestAction
したがって、ここで内部で呼び出しが行われると、メソッドOnActionExecuting
が期待する型を知りたいと思います。TestAction
(例: この場合、2 つの予想されるパラメーターがあります。1 つは typeint
で、もう 1 つは typestring
です。
実際の目的:
実際には の値を変更する必要がありますQueryString
。私はすでにクエリ文字列の値を取得し(を介してHttpContext.Current.Request.QueryString
)、それを変更してから手動で追加することができActionParameters
ますfilterContext.ActionParameters[key] = updatedValue;
問題:
現在、値を に解析しようとしていますint
。正常に解析された場合、それは であるint
と思われるため、必要な変更 (例: 値 + 1) を行い、そのキーに対してアクション パラメーターに追加します。
qsValue = HttpContext.Current.Request.QueryString[someKey].ToString();
if(Int32.TryParse(qsValue, out intValue))
{
//here i assume, expected parameter is of type `int`
}
else
{
//here i assume, expected parameter is of type 'string'
}
しかし、正確な予想されるタイプを知りたいです。とstring
見なされ、整数パラメーターとして追加さ"123"
れるint
ため、他のパラメーターに対して null 例外が発生します。(逆に)。したがって、更新された値を正確な予想される型に解析し、そのキーに対してアクション パラメーターに追加したいと考えています。それで、どうすればこれを行うことができますか?これは可能ですか?Reflection
何とか役立つかもしれませんか?
重要:私は提案を受け入れます。私のアプローチが実際の目的を達成するのに適していない場合、またはそれを行うためのより良い方法がある場合は、共有してください;)