コード例 #1
0
        public async Task <ActionResult> ProfileEdit_Partial(EditModel model)
        {
            using (UserInfoDataProvider userInfoDP = new UserInfoDataProvider()) {
                Manager.NeedUser();

                bool     newUser  = false;
                UserInfo userInfo = await userInfoDP.GetItemAsync(model.UserId);

                if (userInfo == null)
                {
                    newUser  = true;
                    userInfo = new UserInfo();
                }
                model.UpdateData(userInfo);

                // in case of apply, we're just updating the form with new fields - we chose a postback when switching
                // the country as potentially many different address formats could be supported which could overwhelm client side processing
                // so we only provide the fields for one country to the form.
                if (IsApply)
                {
                    ModelState.Clear();
                    return(PartialView(model));
                }
                if (!ModelState.IsValid)
                {
                    return(PartialView(model));
                }

                userInfo = model.GetData(userInfo); // merge new data into original
                model.SetData(userInfo);            // and all the data back into model for final display

                if (newUser)
                {
                    await userInfoDP.AddItemAsync(userInfo);
                }
                else
                {
                    await userInfoDP.UpdateItemAsync(userInfo);
                }

                string msg = Module.SaveMessage;
                if (string.IsNullOrWhiteSpace(msg))
                {
                    msg = this.__ResStr("okSaved", "Profile saved");
                }
                if (string.IsNullOrWhiteSpace(Module.PostSaveUrl))
                {
                    return(FormProcessed(model, msg));
                }
                else
                {
                    return(FormProcessed(model, msg, OnClose: OnCloseEnum.GotoNewPage, NextPage: Module.PostSaveUrl));
                }
            }
        }
コード例 #2
0
        public async Task <ActionResult> ProfileEdit()
        {
            Manager.NeedUser();
            using (UserInfoDataProvider userInfoDP = new UserInfoDataProvider()) {
                EditModel model   = new EditModel {
                };
                UserInfo userInfo = await userInfoDP.GetItemAsync(Manager.UserId);

                if (userInfo == null)
                {
                    userInfo = new UserInfo {
                        UserId = Manager.UserId
                    }
                }
                ;
                model.SetData(userInfo);
                model.UpdateData(userInfo);
                return(View(model));
            }
        }