MVC中传递参数的设计建议

2023-12-19

如何像向导一样在 ASP.net MVC 中通过两个视图传递参数?

或者什么是最佳实践?

我正在开发一个内部错误跟踪 ASP.net 应用程序,该应用程序正在迁移到 MVC,我似乎无法将 ASPX 从我的脑海中甩掉,并且一直在兜圈子。

在 ASPX 应用程序中。

Page1 -> 选择项目,在查询字符串中传递projectId
Page2 -> 选择IssueType,在Querystring中传递projectId和Issuetype
Page3 -> 创建新问题,我们可以从查询字符串中获取projectId和IssueType

我们如何在 MVC 中重新创建上述流程?


我同意 TokenMacGuy 的观点,但有时这可能不可行。

在这种情况下,您将需要在视图可以绑定到的控制器中创建自定义类。然后,当您提交页面时,您可以使用 UpdateModel 获取值并重定向到另一个操作,再次传入模型以填充更多详细信息,或者为该视图传递新模型。

假设您有一个两页的向导。两个视图都继承自<MyApp.Controllers.Wizard>.

在你的控制器中,你有一个类向导,它可能看起来像这样;

public class Wizard
{
  string FirstName {get;set;}
  string LastName {get;set;}
  string eMail {get;set;}
}

电子邮件是在向导的第 2 步中捕获的。

在步骤 1 中,您有两个字段名称 FirstName 和 LastName,在回发时您只需使用 UpdateModel(Wizard object) 来获取值。

该模型现在确实有一个问题,因为您需要将整个模型传递给视图 2,包括视图 1 中不需要的数据。在视图 2 的回发中,您再次执行 UpdateModel(Wizard object) 以获取第 2 个字段,然后是电子邮件。

第二个视图中的名字和姓氏可能位于隐藏字段中。

这是一种方法,但现在我在屏幕上看到它确实不是最好的方法。您可以将每个步骤保存到状态服务中,这样您就不必每次都传回所有数据,这会使其更干净。

JamesShannon的想法也很棒。我认为除非您处于在线购买场景,否则向导已经过时了。

您可以做的是使用 JavaScript 隐藏和显示向导的元素,以便所有输入字段都位于同一页面上。如果您在完成上一部分时有一个滚动动画来打开下一部分,那么这会非常有效。

  <script src="/Scripts/jquery-1.3.2.js"></script>
  <script>
      $(document).ready(function() {

          $("#addComment").click(function() {
          if ($("#divStep2").is(':visible')) {
              $("#divStep2").slideUp(300);
          } else {
          $("#divStep2").slideDown(300);
              }
          });

      });
  </script>

上面的代码将在您单击时切换打开和关闭部分的动画。当然,这确实需要 JS 在客户端计算机上处​​于活动状态,因此您可能希望默认打开所有部分,然后使用 JS 在页面输入时关闭它们。

如果你这样做,那么如果用户确实有 JS,他们会看到漂亮的动画,如果没有,那么他们至少仍然会看到所有部分,生活会很美好。

我认为 JS 将是最好的方法,因为您不需要将不相关的数据传递到每个视图,也不需要将数据保存到某些状态服务,如果人们只是点击离开您的网站,您可能需要清理这些数据1/2 的方式通过。

希望这可以帮助。

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

MVC中传递参数的设计建议 的相关文章

随机推荐

  • 为什么 str.replace (在索引上)给出 KeyError?

    我尝试使用下面的代码来替换国家 地区名称中的括号 其中国家 地区是 DataFrame 的索引 energy Country energy Country str replace r s 我在这里和那里尝试过各种变化 但无论我做什么 我都会
  • C 字符串混乱

    我现在正在学习 C 对字符数组 字符串有点困惑 char name 15 Fortran 这没问题 它是一个可以容纳 最多 15 个字符的数组 char name Fortran C 会帮我计算字符数 这样我就不用这么做了 整洁 char
  • ‘RSA_SSLV23_PADDING’未声明(在此函数中首次使用);您的意思是“RSA_NO_PADDING”吗?使用 asdf 编译 ruby​​-2.7.1 时

    我在使用 asdf 或 rvm 编译 ruby 2 7 1 时遇到此问题 它甚至还会导致 erlang 安装出现问题 错误可能是 generating x86 64 linux fake rb x86 64 linux fake rb up
  • 如何使用WebBrowser控件“在新窗口中打开”?

    当您在 NET 中使用 WebBrowser 控件时 您可以在应用程序中 嵌入 一个 IE 实例 实质上是创建您自己的基于 IE 的 Web 浏览器 有谁知道如何使创建的任何新窗口 例如当用户从上下文菜单中选择 在新窗口中打开 时 在 We
  • 当系列包含 None 时,比较 pd.Series 并获得似乎不寻常的结果

    我想知道为什么比较两个相同的系列None值返回 False pd Series x y None pd Series x y None 0 True 1 True 2 False dtype bool 我希望所有结果都是 True 如果我从
  • 为什么 std::getline 调用 std::cin 不等待用户输入? [复制]

    这个问题在这里已经有答案了 有什么充分的理由吗 std string input std getline std cin input getline 调用不会等待用户输入 cin的状态是不是有点混乱了 您很可能在读取其他数据后尝试读取字符串
  • 适用于桌面(基于控制台)应用程序的 Facebook 身份验证

    我正在开发一个 python 应用程序 它允许我向 Facebook 发布更新 状态 我在获取访问令牌时面临一个基本问题 由于该应用程序在桌面上运行 因此不存在使用某些 Web 服务器的问题 我知道我必须打开一个网址 https www f
  • Android SDK:获取原始预览相机图像而不显示它

    我想对原始图像进行图像处理而不将其显示在屏幕上 这显然会降低性能 根据此线程的答案从相机拍摄照片而不进行预览 https stackoverflow com questions 2386025 android camera without
  • 如何回顾 HTML5 Canvas 历史

    我有一个使用 Imgly HTML5 Canvas 插件的图像裁剪器 我需要能够为裁剪器设置历史堆栈 以便能够撤消裁剪操作 目前 我可以在单击按钮时清除画布 但我需要能够保留原始图像 并且在裁剪步骤执行不正确的情况下 只需返回画布中图像的更
  • 每组前 3 名,包括 0 名

    我有一个表 我想从 Access 2010 开始每周返回按 ErrorMargin 排列的前 3 条记录 我遇到的问题是 0 个值被忽略 并且在平局的情况下我只想看到 1 条记录 其中平局将导致记录总数超过 3 我的表是 注意 帖子底部的
  • 组合 JSON 数组

    我有 3 个 json 数组 每个数组都以相同的格式列出信息 Array ID NAME DATA ID NAME DATA etc 我的目标是将所有 3 个数组合并为一个数组 并通过将 3 个数组传递给函数来按 NAME 排序和显示 我尝
  • RecyclerView 在滚动之前不会显示项目

    这个问题已被问过几次 但这些答案不适用于我 我想要一个关于一般导致此问题的原因的更笼统的答案 我的活动布局中有一个回收视图 recyclerview 的 Rows 是一个包含一个 imageview 和 textview 的约束布局
  • 如何杀死所有超过一定年龄的 Linux 进程?

    我在某个服务器上遇到一些类似僵尸的进程的问题 需要时不时地杀死它们 我怎样才能最好地识别那些运行时间超过一个小时左右的程序 找到了一个适合我的答案 警告 这会发现and kill长时间运行的进程 ps eo uid pid etime eg
  • 为什么在 android 开发者指南中 android:authorities 是这样定义的?

    下面是记事本示例代码 为什么android authorities com google provider NotePad而不是使用项目包名称 到底是什么android authorities要求 Licensed under the Ap
  • JSON - 与 Android 应用程序一起使用的单个文件

    我得到的这个应用程序需要屏幕上的四个位置保持最新 标题 地址 日期和图像源 所以 我想也许我可以编写应用程序将读取的四个不同的 JSON 文件 如果我想更改应用程序显示的内容 我只需更改服务器上的那些 JSON 文件即可 也许是这样的 fi
  • 使用 LDAP (AD) 进行 MySQL 身份验证

    我正在尝试制定一个计划 允许用户使用 LDAP 对 MySQL 数据库 实际上有很多 进行身份验证 更具体地说 是 ActiveDirectory 数据库可能会通过应用程序而不是网络来访问 我有什么选择 EDIT Okay 似乎没有 官方
  • 使用 PHP cURL POST JSON

    我有以下 php 代码 curl setopt ch CURLOPT URL URL curl setopt ch CURLOPT USERAGENT this gt agent curl setopt ch CURLOPT RETURNT
  • Akka actor 终止/重启行为

    我对在 Akka 中看到的行为感到困惑 简而言之 我有一组演员进行科学计算 恒星形成模拟 他们有某种状态 当发生错误导致一个或多个进入无效状态时 我想重新启动整个集合以重新开始 如果单个计算 在整个集合上 花费太长时间 无法提前预测它可能运
  • 在单个 GPU 上运行多个神经网络时性能缓慢

    我有 3 个独立的 Python 进程 每个进程都运行一个 TensorFlow 会话并加载了我的模型 该系统有 1 个 GPU 当我同时进行 3 个预测 每个进程 1 个 时 预测时间比一次只进行 1 个预测要慢得多 我通过以下方式限制了
  • MVC中传递参数的设计建议

    如何像向导一样在 ASP net MVC 中通过两个视图传递参数 或者什么是最佳实践 我正在开发一个内部错误跟踪 ASP net 应用程序 该应用程序正在迁移到 MVC 我似乎无法将 ASPX 从我的脑海中甩掉 并且一直在兜圈子 在 ASP