在asp.net mvc视图中,您可以访问随视图返回的模型。
如果你不在视图本身,而是在控制器方法完成后运行的另一个方法,那么有什么[静态?]方法来获取当前视图的当前模型?
我可以访问所有标准对象:会话,请求,响应等。
我通过加载Session变量来解决这个问题,但是如果框架已经拥有会话变量,我就不喜欢使用会话。
答案 0 :(得分:0)
您可以创建将在MVC请求管道中执行的操作过滤器。如果要在执行操作方法后执行某些代码,可以覆盖@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SIGN_IN_REQUEST) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
//Information of account is loaded here
final GoogleSignInAccount account = result.getSignInAccount();
int accountId = account.getId();
Plus.PeopleApi.load(googleApiClient, accountId).setResultCallback(new ResultCallback<People.LoadPeopleResult>() {
@Override
public void onResult(@NonNull People.LoadPeopleResult loadPeopleResult) {
Person p = loadPeopleResult.getPersonBuffer().get(0);
displayPerson(account, p);
}
});
}
}
public void displayPerson(GoogleSignInAccount account, Person p) {
DataContainer.getDataContainerInstance().setGoogleSignInAccount(account);
DataContainer.getDataContainerInstance().setGooglePerson(p);
if (account != null ) {
getFragmentManager()
.beginTransaction()
.replace(R.id.LoginActivityContentArea, new GoogleSignUpFragment(), "GoogleSignUpFragment")
.addToBackStack("GoogleSignUpFragment")
.commit();
}
}
方法。
OnActionExecuted
如果您想要所有请求,可以将此过滤器注册到public class MyCustom : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var viewModel = filterContext.Controller.ViewData.Model;
var response = filterContext.HttpContext.Response;
var viewBag = filterContext.Controller.ViewBag;
// Use any of these as needed
base.OnActionExecuted(filterContext);
}
}
方法中的GlobalFilters集合。
RegisterRoutes