0

カスタムフィルターを定義し、グローバルフィルターに追加してすべてのアクションに適用しました

public class ProfileRequiredActionFilter : IActionFilter
{
    #region Implementation of IActionFilter

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {

        //Chech that all profile is filled
        filterContext.Result = new RedirectResult("Path-To-Create-A-Profile");
    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
    }

    #endregion
}

asp.net では、mvcProfile.GetPropertyValue("name")はプロファイルのプロパティの値を取得します。1 つまたは 2 つのプロパティをチェックしたい場合、問題はありません。プロファイル プロパティが満たされていることを確認する最良の方法をどのように実装しますか? フラグを使用stringisemptyornullして、プロパティを 1 つずつチェックする必要がありますか?

4

1 に答える 1

0

bool以下のように値を返す新しい関数を追加しました:

public class ProfileRequiredActionFilter : IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        public bool checkFilledProfile() {
            return CheckFilledProfile("FirstName", "LastName", "Country", "State", "City", "Address", "PostalCode", "Phone", "Mobile", "Email");
        }

        private static bool CheckFilledProfile(params string[] properties) {
            bool returnValue = true;
            for (int i = 0; i < properties.Length; i++)
                if (string.IsNullOrEmpty(HttpContext.Current.Profile.GetPropertyValue(properties[i]) as string))
                   filterContext.Result = new RedirectResult("Path-To-Create-A-Profile");
            }
    }
}

[ProfileRequiredActionFilter]確認したいアクションの上に追加します

于 2013-09-07T18:51:46.643 に答える