MVC 在视图之间传输数据

2024-04-27

我刚刚开始学习 MVC,并试图了解它是如何工作的。

我不想将用户发送到所有编辑、插入和列表操作的不同视图。

在我的示例应用程序中,视图包含项目列表,列表下方有一个带有操作“{Controller}/Create”的表单(用于插入新项目),但没有创建视图。

当用户插入新项目时,它会使用 httpverb post 发布到 Create 操作,并创建该项目并使用 RedirectToAction 方法返回到 List 操作。

但我无法以这种方式向用户显示任何消息(错误、信息等),因为我无法在“创建”操作和“列表”操作之间传递数据。我怎样才能做到这一点?


您需要使用 Post Redirect Get PRG 模式。

请阅读这个使用PRG模式进行数据修改这篇博文中的部分由卡齐·曼祖尔·拉希德.
http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx


这种方法使用TempData维持ModelState重定向之间的数据。

[HttpPost, ValidateAntiForgeryToken, ExportModelStateToTempData]
public ActionResult Create(FormCollection form)
{
    Product p = new Product();

    if (TryUpdateModel<IProductModel>(p))
    {
        productRepository.CreateProduct( p );
    }
    else
    {
        // add additional validation messages as needed
        ModelState.AddModelError("_generic", "Error Msg");
    }

    return RedirectToAction("Index");
}


这是你的Index动作方法。

[ImportModelStateFromTempData]
public ActionResult Index()
{
    IList<Product> products = productRepository.GetAll();
    return View("Index", products);
}


这是你的Index view.

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IList<Product>>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Index
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Products</h2>

    <% foreach (var p in Model) { %>
        <div><%= Html.Encode( p.ProductName ) %></div>
    <% } %>

    <%= Html.ValidationSummary("Please correct the errors", new { id = "valSumCreateForm" }) %>
    <% using (Html.BeginForm("Create", "Product")) { %>
        Product Name: <%= Html.TextBox("ProductName") %>
        <%= Html.AntiForgeryToken() %>
        <% ViewContext.FormContext.ValidationSummaryId = "valSumCreateForm"; %>
    <% } %>
</asp:Content>
  1. The ImportModelStateFromTempData and ExportModelStateToTempData属性有助于模型迁移 状态重定向之间的错误。这
  2. <% ViewContext.FormContext.ValidationSummaryId = "valSumCreateForm"; %>将 MVC 表单与其相应的验证摘要相关联。



您也可以在这里查看我对此的另一个答案。ASP.NET MVC2 中具有 SelectList 绑定的 ViewModel https://stackoverflow.com/questions/2333305/viewmodel-with-selectlist-binding-in-asp-net-mvc2/3073579#3073579


如果您有任何疑问,请告诉我。
-Soe

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC 在视图之间传输数据 的相关文章

  • 如何在couchdb中实现复杂的搜索过滤器?我应该避免暂时的观点吗?

    我想在网格中管理我的用户实体 我想对它们进行排序 并且我想为每一列都有一个搜索过滤器 我的动态生成的临时视图工作正常 function doc if doc type User Dynamic filters WHERE firstName
  • SwiftUI View 协议中的EnvironmentObject

    我想制定这样的协议 protocol SubscriptionManagerView View var subscriptionManager EnvironmentObject
  • AppDelegate 或 AppController

    在阅读可可教程时 我注意到一些教程使用AppDelegate还有一些AppController用于定义IBActions打开使用子类的各种窗口NSWindowController 这有某种经验法则吗 我创建一个仅是我的应用程序委托的类 并实
  • 在 PHP 控制器中调用模型功能的最佳选择

    我正在使用 PHP 构建自定义 MVC 框架 我的问题是当我想通过控制器类访问任何模型类时 我见过的一种方法是通过使用 get 和 set 等神奇方法的注册表设计模式 尽管 PHP get 和 set 被一些人认为是不好的做法 我读过有关通
  • 将照片上传到 MVC 4 应用程序

    我正在尝试创建一个控制器来在我的 MVC4 应用程序中上传照片 但我不断收到此错误 输入不是有效的 Base 64 字符串 因为它包含非 Base 64 字符 两个以上的填充字符或填充字符中包含非空白字符 照片控制器 cs public c
  • 使用 Zend Framework 2 扩展 ZfcUser

    您好 我正在尝试使用 Zend Framwork 2 的 ZfcUser 模块编写用户注册表单 并且希望获得一些有关添加更多用户字段时最佳实践的建议 到目前为止 我已经创建了自己的模块 名为 WbxUser 如模块 wiki 页面 http
  • Zend 覆盖默认视图对象

    如何覆盖 zend 框架中的默认视图对象 以便我可以拥有自定义视图对象 class Bootstrap extends Zend Application Bootstrap Bootstrap function initViewHelper
  • MVC 与观察者模式

    我最近在 StackoverFlow 上问了一个关于 MVC 的问题 MVC设计模式 架构模式可以用于桌面应用程序开发吗 https stackoverflow com questions 305988 can the mvc design
  • 什么是 MVC 框架以及为什么它是必要/有用的?

    我知道 MVC 框架允许您分离业务逻辑 数据库访问和表示 但为什么我们需要一个框架来做到这一点 我们不能将我们的类分开 也许对模型 视图和控制器类使用不同的包 文件夹吗 在我看来 你所说的是 MVC 模式 而不是特定的框架 当然 您可以将所
  • 在屏幕上滑动手指激活按钮,就像按下按钮一样

    如果我的标题不够清楚 我会详细解释一下 假设我们有一个充满多个按钮 10 多个 的屏幕 我们按下一个按钮 激活 onTouch onClick 如果我们现在移动手指而不抬起它 我希望它激活它滑过的任何其他按钮 在这种特殊情况下 我希望当您滑
  • ViewPager内部的TextView拦截触摸事件

    我有一个ViewPager包含两个片段 在任何片段中我都可以触摸一个地方 滑动即可切换到另一个地方fragment 其中一个片段包含一个列表 列表中的项目包含一项TextView和一个ImageView 问题是 如果您是从点击开始拖动的Im
  • 为树视图创建 Qt 模型

    我正在用 Qt 使用 C 编写一个应用程序 我需要在树视图中表示一个对象结构 实现此目的的方法之一是为此创建一个模型 但在阅读有关该主题的 Qt 文档后我仍然很困惑 我的 结构 非常简单 有一个Project持有的物体Task中的对象std
  • 向 Rails 中的所有活动链接添加“活动”类?

    基本上 我有很多类似这样的代码 link to t profile business path business class active if current page business path business 这不是很干 我想知道是
  • MVC 的设计是 RESTful 的吗

    MVC 必须是 RESTful 的吗 有没有办法制作一个SOAP服务使用MVC图案 输入请求实际上会进入View首先然后进入Controller那么Model eg Request gt View gt Controller gt Mode
  • 使用 ViewModel 设计 MVC 存储库

    我想创建一个存储库类来将我的数据逻辑与控制器分开 我使用 ViewModel 来表示一些数据 这些数据将填充来自不同表的数据 我有一些问题 对于像这样的方法GetAll 我要返回一个IQueryable
  • 我使用 jsp/jstl/spring 动态生成 css 和 js。如何将此结果放置在头部的链接标记中。不在头部的脚本标签中

    我在jsp中生成css 输出是 现在我在 jsp 中使用以下代码调用此代码 它有效并且输出是这样的
  • Android 自定义视图忽略 XML 中的“android:enabled”?

    我正在设置android enabled false 在自定义视图上 但它似乎对isEnabled 财产 这是一个简单的测试用例 public class TestView extends View public TestView Cont
  • 服务层或存储库中的密码哈希等?

    作为 MVC 的最佳实践 在发送到数据库之前处理密码散列 加盐或数据格式化等事务的逻辑应该放在哪里 我读到存储库应该仅用于处理数据访问的逻辑 这是属于服务层的东西吗 控制器 这还重要吗 我倾向于将散列放在存储库层中 如果只是出于实际原因 即
  • Joomla 模型视图控制器 (MVC) 如何工作?

    我是 Joomla 的新手 我想知道 Joomla 控制器如何将数据传递给模型 模型传递给控制器 以及控制器传递给视图 虽然这可能是一个愚蠢的问题 但我确实试图找到答案 我希望我能从 stackoverflow 大家庭得到一些帮助 控制器获
  • 在 asp.net MVC 控制器中调用异步外部 Web 服务

    在 Asp net MVC 控制器 GET 方法 中 我调用外部 Web 服务 用于 IP 地理定位 返回 IP 位置的 json 数据 如何使调用异步 以便堆栈可以在等待服务响应时继续 当 GEO IP 请求完成后 我希望能够更新数据库

随机推荐

  • 将一些提交移至另一个分支

    我只有一个分支有 git repo A B C D E master 我想将提交 B C 和 D 拆分到另一个名为开发的分支 A E master B C D develop 做到这一点最简单的方法是什么 无需关心远程仓库 做cherry
  • `/dev/urandom` 适合模拟目的吗?

    似乎在类 Unix 系统中使用纯 C fread from dev urandom是提取高质量随机字节的最简单方法 我需要运行一个每秒需要大约 10k 32 位随机数的模拟 并且可能会运行几天 是 dev urandom可以用于此目的吗 当
  • 根据具有重复测量的其他列的条件向列添加值

    我对 R 还很陌生 正在尝试在 Rstudio 中准备我的数据集以供进一步分析 如果有人能帮助我找到代码的解决方案 我将不胜感激 我的数据叫做m8 这就是我到目前为止所做的 但它只返回整个 Q2 列中 U1High U1Low 和 U1Me
  • 如何对加密算法进行逆向工程?

    我编写了一个以这种方式加密文本的应用程序 获取输入文本 反转文本 转换为十六进制 用密钥进行异或 Base64编码 现在 我自己没有做很多加密 编码 所以我的问题可能听起来很愚蠢 但是 假设我得到一个包含上述算法内容的文件 而我不知道这个算
  • 如何修改 HttpUrlConnection 的标头

    我试图稍微改进一下 Java Html 文档 但我遇到了问题HttpUrlConntion 有一件事是 如果用户代理是 Java VM 某些服务器会阻止请求 另一个问题是HttpUrlConnection不设置Referrer or Loc
  • 将数字缩放为 <= 255?

    我的单元格的数值可以是 0 到 0 之间的任何值Integer MAX VALUE 我想对这些单元格进行相应的颜色编码 如果该值 0 则 r 0 如果该值是Integer MAX VALUE 则 r 255 但是中间的值呢 我想我需要一个函
  • D3.js - 如何迭代数据集中的子数组

    我试图让 d3 迭代数据中的子数组并生成多个饼图 这是完整的代码 来自https gist github com mbostock 1305111 https gist github com mbostock 1305111 and htt
  • 为 ListView 最后一个元素添加下边距

    我需要添加具有复杂项目背景的 ListView 顶部和底部的偶数 奇数和圆角不同 它看起来像这样 我已经通过级别列表实现了所有这些东西 但我还想做一件事 现在底部项目位于屏幕底部附近 最好添加一些空间 我不想向 ListView 添加底部边
  • 如何将 3D 图像输出到 3D 电视?

    我有一台 3D 电视 如果我不至少尝试让它显示我自己创作的漂亮 3D 图像 我就会逃避我的责任 作为一个极客 我之前已经完成了非常基本的 OpenGL 编程 因此我了解所涉及的概念 假设我可以为自己渲染一个简单的四面体或立方体并使其旋转一点
  • 将 Java `sort` 签名转换为 `? super T` 到​​ Scala(泛型)

    问题 看着这个问题 https stackoverflow com questions 16430355 translating generic 20wildcards from java to scala关于迁移 Java 签名 publ
  • Microsoft 计算机视觉 API 或 Google 的 Cloud Vision API 是否可以获取对象的位置?

    我正在尝试开发一个需要知道图像中标记对象位置的应用程序 知道图像中有一架 钢琴 还不够 我需要知道钢琴在图像中的位置 微软的计算机视觉 API 和谷歌的云视觉 API 都提供了某种形式的裁剪建议 智能缩略图生成服务 这让我认为某些对象的位置
  • 在groovy中将变量标记为final是否有意义?

    我想知道变量如何标记为final由 Groovy 解释 在 1 8 0 1 8 1 中 我知道这在 Java 中是有意义的 并且可以提高性能 当然还有助于避免愚蠢的错误 我想了解如果final可以帮助java编译器优化用Groovy编写的程
  • 如何在iOS Mantle模型子类中设置默认值

    interface Entity property assign int searchTotalPagesAll property assign int searchTotalPagesIdeas end implementation En
  • 如何检查每个观察中的最小日期并动态更新标志

    我必须每次检查最短日期并向其添加 30 天并相应地设置字段 例如 我的桌子 ID StartDate EndDate 1 2017 01 01 2017 02 01 1 2017 01 09 2017 01 28 1 2017 04 01
  • 从另一个刚刚编译的程序集编译程序集

    我需要在内存中编译程序集 这样可以编译另一个程序集 有一个带有一个按钮的表格 这是表单的代码 using System using System IO using System CodeDom using System CodeDom Co
  • Bazel远程缓存分析数据

    我正在 jenkins 上的 docker 容器内运行 bazel 通过 bazelisk 此外 我使用远程缓存 在不进行任何更改的后续运行中 我获得 100 的缓存命中 但每次创建新容器时都会运行分析阶段 约 60 秒 有没有办法远程缓存
  • 为什么我的音频不倒带?

    我在 Javascript 中倒带音频时遇到了一些问题 我基本上有一个倒计时 当倒计时接近结束时 每秒都会发出蜂鸣声 我尝试使用 var bip new Audio http www soundjay com button beep 7 w
  • PL/SQL 打印存储过程返回的引用游标

    如何从存储过程 OUT 变量 返回的引用游标中获取数据并将结果行打印到 SQL PLUS 中的 STDOUT ORACLE存储过程 PROCEDURE GetGrantListByPI p firstname IN VARCHAR2 p l
  • 为什么我的 sed 命令在使用变量时失败?

    使用 bash 我尝试插入日期变量并搜索该日期的日志文件 然后将输出发送到文件 如果我像这样对日期进行硬编码 它会起作用 sed n Nov 22 2010 p file gt log file 但如果我这样做就会失败 date Nov 2
  • MVC 在视图之间传输数据

    我刚刚开始学习 MVC 并试图了解它是如何工作的 我不想将用户发送到所有编辑 插入和列表操作的不同视图 在我的示例应用程序中 视图包含项目列表 列表下方有一个带有操作 Controller Create 的表单 用于插入新项目 但没有创建视