asp.net-mvc-3 – 将部分视图返回到同一视图
发布时间:2020-12-16 09:36:16 所属栏目:asp.Net 来源:网络整理
导读:我有一个由3个部分视图组成的视图 屏幕左侧和右侧顶部的2个部分. 每个人都有一个互斥的搜索,每个帖子都回到他们自己的行动 这是呈现初始视图的操作 public ActionResult Index() { var model = new SearchOptionsViewModel(); return View(model); } 这是部
我有一个由3个部分视图组成的视图
屏幕左侧和右侧顶部的2个部分. 每个人都有一个互斥的搜索,每个帖子都回到他们自己的行动 这是呈现初始视图的操作 public ActionResult Index() { var model = new SearchOptionsViewModel(); return View(model); } 这是部分视图之一的post动作: [HttpPost] public ActionResult SearchByUser(UserSearchOptionsViewModel model) { if(ModelState.IsValid) { var list = SearchUserService.SearchByValue(model.LastName,model.Username,model.EmailAddress); if(list != null) { var resultsModel = new UserSearchResultsListViewModel(); list.ForEach(item => resultsModel.Users.Add(new UserSearchResultsViewModel(item))); return RedirectToAction("SearchResults",resultsModel); } } return View(model); } 此模型成功发布并从数据库中获取数据并将其添加到viewmodel. 这是我希望通过先前操作接收模型并将部分渲染回原始视图的操作.我认为使用第三个SearchResults部分视图是答案,但这不起作用,它导航到它自己的页面显示结果而不是在同一页面上. public ActionResult SearchResults(UserSearchResultsListViewModel model) { return PartialView(model); } 当我这样做时,模型总是以null为单位.我在这里缺少一些基本的东西…… 解决方法
这就是我最终做的事情.它感觉不完全干净,但我保持方法的责任最小.如果有人有更好的建议,我想在没有TempData的情况下更好地做到这一点,请发布你的例子.
// Inital loaded view with 3 partial views // 2 for search criteria,1 for results public ActionResult Index() { var model = new SearchUsersViewModel(); if(TempData["model"] != null) model = (SearchUsersViewModel)TempData["model"]; return View(model); } // Post the search criteria model for search // by user data (by last name,etc...) // Then redirect back to Index. // TempData will have the full model with results populated [HttpPost] public ActionResult SearchByUser(FilterUsersByUserDataViewModel model) { if(ModelState.IsValid) { var list = SearchUserService.SearchByValue(model.LastName,model.EmailAddress); if(list != null) { TempData["model"] = PrepareResultsModel(list); return RedirectToAction("Index"); } } return View(model); } // This method just separates the concern of creating //the new full model with search results populating the results view private SearchUsersViewModel PrepareResultsModel(List<SearchUserViewDTO> list) { var searchResults = new UserSearchResultsViewModel(); list.ForEach(item => searchResults.Users.Add(new UserViewModel(item))); var model = new SearchUsersViewModel(); model.UserSearchResultsViewModel = searchResults; return model; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Asp.Net Core 发布和部署( MacOS + Linux + Nginx )
- asp.net-mvc – 在MVCContrib网格中格式化布尔列
- 在asp.net中使用太多会话的缺点
- IdentityServer4 QuickStart 授权与自定义Claims
- asp.net – AsyncPostBackTrigger和PostBackTrigger有什么区
- asp.net-mvc – 为什么我的动作方法不会超时?
- ASP.NET MVC – 要从外部控制器或视图确定的内容的绝对URL
- asp.net – 在按钮单击时动态添加新文本框
- ASP.NET和C#重定向
- asp.net-mvc-3 – 将@helper代码转移到App_Code文件夹抛出错
推荐文章
站长推荐
- Asp.net配合easyui实现返回json数据实例
- asp.net – 如何指定现有的ClaimsIdentity的目的
- asp.net-mvc – 在MVC API中接受字节数组参数作为
- asp.net-mvc – 动作命名约定
- asp.net-core – 如何在ASP.NET Core中实现angul
- asp-classic – Request.BinaryRead(Request.Tot
- asp.net-mvc – 当ModelState为InValid时调用的A
- asp-classic – 使用SMTP身份验证的经典ASP发送电
- asp.net-mvc – ValidateAntiForgeryToken属性
- 实体框架 – Unity Lifetime Managers和EF Data
热点阅读