3

RouteDataカスタム内にいくつか設定していますAction Filter

filterContext.RouteData.Values.Add("accountId", accountId);
filterContext.RouteData.Values.Add("permission", (int)permission);

次に、次のようなアクションがあります

public ActionResult Get(Guid accountId, int permission, int id) {

}

RouteDataルートを介して値をアクション パラメーターに結び付けることはできますか? もしそうなら、どのように?

次のような URL を使用したいだけです

http://localhost/Users/Get/1

ルートデータが存在し、次を使用して取得できます

Guid accountId = (Guid)RouteData.Values["accountId"];
Permission permission = (Permission)RouteData.Values["permission"];
4

2 に答える 2

1

ValueProviderアクション フィルターではなく、カスタム を作成する必要があります。
詳細については、こちらを参照してください。

于 2012-05-16T02:56:22.413 に答える
1

ActionParameters プロパティを使用できます。

public class MyActionFilterAttribute: ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.ActionParameters["accountId"] = Guid.NewGuid();
        filterContext.ActionParameters["permission"] = 456;
    }
}

その後:

public class HomeController : Controller
{
    [MyActionFilter]
    public ActionResult Index(Guid accountId, int permission, int id)
    {
        return Content(string.Format("accountId={0}, permission={1}", accountId, permission));
    }
}

リクエスト/home/index/123すると、次のように表示されます。

accountId=f72fddb8-1c35-467b-a479-b2668fd5b2ec, permission=456
于 2012-05-16T07:10:42.870 に答える