Asp.net mvc 4 重新加载布局会导致模型变空(MVC4)

Asp.net mvc 4 重新加载布局会导致模型变空(MVC4),asp.net-mvc-4,Asp.net Mvc 4,我试图使用HttpPost在视图中显示一个结果表,但我的视图总是显示为空。 我现在已经发现httpPost操作可以工作并返回一个结果,但是在完成操作之前,再次调用布局,其中再次调用RenderBody。一旦RenderBody完成,视图再次包含一个空模型,并导致页面显示为空 寻求如何解决此问题的建议!我为此伤了头好几个小时,似乎看不见光明 查看代码: @使用MovieRental.DAL.Entities@模型列表 @{ViewBag.Title=MyRentedMovies;} MyRent

我试图使用HttpPost在视图中显示一个结果表,但我的视图总是显示为空。 我现在已经发现httpPost操作可以工作并返回一个结果,但是在完成操作之前,再次调用布局,其中再次调用RenderBody。一旦RenderBody完成,视图再次包含一个空模型,并导致页面显示为空

寻求如何解决此问题的建议!我为此伤了头好几个小时,似乎看不见光明

查看代码:

@使用MovieRental.DAL.Entities@模型列表 @{ViewBag.Title=MyRentedMovies;} MyRentedMovies 放映我租来的电影 @成本; @如果是型号!=空的{ 行动 电影名称 发布日期 故事情节 地方 电影类型 行动 电影名称 发布日期 故事情节 地方 电影类型 @模型中的每个var项{ @item.MovieName @item.ReleaseDate @项目.故事情节 @item.Location.LocationName.ToString @item.MovieGenre.GenreName.ToString } }否则{ 你现在没有任何租来的电影。
}返回html后,立即调用document.location='/useronly/myrentedmovies';并重定向到GET方法。我删除了document.location行,但行为没有改变。当我在debug中运行时,我看到post工作并返回到视图并通过模型填充表,但是在那之后,布局的renderBody再次运行相同的html页面,这一次,因为我假设它现在是GET,所以模型显示为空。因此,我的JS看起来不错,但是当由于布局的renderbody调用而再次调用GET方法时会出现问题..?您的脚本不好。Ajax调用保持在同一页面上。您没有对返回的html执行任何操作,例如,将其添加到DOM中,这样您就看不到任何更改。但这一切的意义何在。表单中唯一的元素是一个隐藏字段,它似乎代表当前用户。为什么不把POST方法中的所有代码都放到GET方法中,只渲染您想要的视图呢。表单元素、脚本和POST方法似乎都毫无意义。感谢您的解释!我对MVC还很陌生,并且还在理解的过程中。实际上,我想简单地使用GET而不是POST,但就是想不出如何通过这种方式将参数UserID传递给我的控制器方法。我现在就想办法解决这个问题。你必须在GET方法中有userID。您的视图使用@ViewBag.user.UserId设置隐藏输入的值,尽管GET方法代码没有设置它,所以我假设您省略了一些代码。输入的名称是currentuserid,但POST方法参数是userid,因此无论如何它都不会工作!只需将POST方法中的所有代码移动到GET方法,并删除表单元素、脚本和POST方法。但首先要花一些时间学习一些基本的MVC教程。