Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在不进行编辑的情况下通过视图将模型传递给另一个操作

在不进行编辑的情况下通过视图将模型传递给另一个操作
EN

Stack Overflow用户
提问于 2015-07-16 22:35:30
回答 1查看 68关注 0票数 0

我有一个接受大量数据的表单。所有数据都存储在一个模型对象中。

当提交表单时,如果通过验证,模型将传递给确认视图,该视图仅显示表单中提交的所有信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[HttpPost]
    public ActionResult ClientProfile(ClientProfileFormModel model)
    {
        if (ModelState.IsValid)
        {
            return View("ClientProfileConfirmation",model);
            }

        return View(model);
    }

当用户单击底部的提交按钮时,我需要模型进入一个操作,以便我可以发送电子邮件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[HttpPost]
    public ActionResult ClientProfileConfirmationSubmit(ClientProfileFormModel model)
    {

        string emailToAdminBody = GenerateFirmProfileAdminEmail(model);
        EmailLogic.Instance.SendEmail("test@test.com", "test@test.com", "Firm profile from " + model.FirmAddress.Name, emailToAdminBody);

        return View(model);
    }

我的问题是:我需要一种简单的方法来获取我的模型,从表单的HttpPost操作(它在验证后将您发送到确认页面)到确认的HttpPost操作。我希望避免用隐藏的输入填充确认视图,这样我就可以通过表单将其全部带入。

我也尝试过将模型存储在Session和TempData中,但由于某些原因,这两种方法都返回null。我认为这与经历多个动作有关。

这真的不应该那么难!我遗漏了什么?将一堆隐藏的输入字段放入确认页的表单中是唯一的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-07-17 01:05:34

我用过TempData,它工作得很好。

模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ClientProfileFormModel
{
    public string Name { get; set; }
    public string Address { get; set; }
    public string Country { get; set; }
}

控制器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ClientController : Controller
{
    // GET
    public ActionResult ClientProfile()
    {
        return View();
    }

    [HttpPost]
    public ActionResult ClientProfile(ClientProfileFormModel model)
    {
        if (ModelState.IsValid)
        {
            return RedirectToAction("ClientProfileConfirmation", model);
        }

        return View(model);
    }

    // GET
    public ActionResult ClientProfileConfirmation(ClientProfileFormModel model)
    {
        return View(model);
    }

    [HttpPost]
    public ActionResult ClientProfileConfirmation()
    {
        var model = (ClientProfileFormModel) TempData["clientProfile"];
        string emailToAdminBody = GenerateFirmProfileAdminEmail(model);
        EmailLogic.Instance.SendEmail(...);

        TempData["success-message"] = "Your profile has been approved. Check your inbox.";
        return View("ClientProfileConfirmation", model);
    }
}

ClientProfile视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@model StackOverflow.Models._31465719.ClientProfileFormModel

@{
    ViewBag.Title = "ClientProfile";
}

<h2>ClientProfile</h2>

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>ClientProfileFormModel</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Country, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Country, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Country, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

ClientProfile确认视图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@model StackOverflow.Models._31465719.ClientProfileFormModel

@{
    TempData["clientProfile"] = Model;
    ViewBag.Title = "ClientProfileConfirmation";
    var successMessage = TempData["success-message"];
}

<h2>ClientProfileConfirmation</h2>

@if (successMessage != null)
{
    <div class="alert alert-success">
        <p class="text-success">@successMessage</p>
    </div>
}

@using (Html.BeginForm())
{
    <div>
        <h4>ClientProfileFormModel</h4>
        <hr />
        <dl class="dl-horizontal">
            <dt>
                @Html.DisplayNameFor(model => model.Name)
            </dt>

            <dd>
                @Html.DisplayFor(model => model.Name)
            </dd>

            <dt>
                @Html.DisplayNameFor(model => model.Address)
            </dt>

            <dd>
                @Html.DisplayFor(model => model.Address)
            </dd>

            <dt>
                @Html.DisplayNameFor(model => model.Country)
            </dt>

            <dd>
                @Html.DisplayFor(model => model.Country)
            </dd>

        </dl>
    </div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Confirm" class="btn btn-default" />
        </div>
    </div>
}

我在最后一个确认视图中所做的就是将模型保存到TempData中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TempData["clientProfile"] = Model;

然后在控制器中读取它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var model = (ClientProfileFormModel) TempData["clientProfile"];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31465719

复制
相关文章
允许进行DML操作的视图条件
视图可以屏蔽某些基表的信息,或是join多个基表组成一个复杂查询,视图本身也是可以进行DML操作,但受一些条件的限制。
bisal
2019/01/29
7940
ASP.NET MVC 5 - 将数据从控制器传递给视图
在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图。控制器类将响应请求来的URL。控制器类是给您写代码来处理传入请求的地方,并从数据库中检索数据,并最终决定什么类型的返回结果会发送回浏览器。视图模板可以被控制器用来产生格式化过的HTML从而返回给浏览器。 控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML。最佳做法是:一个视图模板应该永远不会执行业务逻辑或者直接和数据库进行交互。相应的,一个视图模板应该只和控制器所提供的数据进行交
葡萄城控件
2018/01/10
5K0
ASP.NET MVC 5 - 将数据从控制器传递给视图
我可以在不source脚本的情况下将变量从Bash脚本导出到环境中吗
有没有一种方法可以通过只执行 export.bash 而不 source 它获取 $VAR?
程序熵
2023/09/25
1920
我可以在不source脚本的情况下将变量从Bash脚本导出到环境中吗
将多个属性传递给 Vue 组件的几种方式
所有使用基于组件的体系结构(如Vue和React)的开发人员都知道,创建可重用组件是很困难的,而且大多数情况下,最终会通过传入大量的属性,以便从外部更容易地控制和自定义组件。这并不坏,但是传递大量属性确实会变得有点麻烦和丑陋。
前端小智@大迁世界
2020/05/11
1.9K0
全面指南:通过机器学习对Youtube视图进行预测
这个项目是由艾伦·王,Aravind Srinivasan,Kevin Yee和Ryan O ‘ farrell设计的。 脚本和模型地址:https://github.com/allenwang28/YouTube-Virality-Predictor 在我们的模型中输入你自己的缩略图和标题来预测视频视图。 模型地址:https://enigmatic-wave-74142.herokuapp.com/ 背景 在过去的5年中,YouTube向YouTube的内容创作者支付了超过50亿美元。PewDiePie
AiTechYun
2018/03/06
1.4K0
全面指南:通过机器学习对Youtube视图进行预测
在没有 Mimikatz 的情况下操作用户密码
通过利用Mimikatz的 lsadump::setntlm和lsadump::changentlm函数,过去已经涵盖了这两个用例。虽然Mimikatz是最好的攻击工具之一,但我会尽量避免使用它,因为它是反病毒和 EDR 工具的高度目标。在这篇文章中,我将专门讨论用例 #2 — 为横向移动或权限提升重置密码。
Khan安全团队
2022/03/21
2.1K0
如何将多个参数传递给 React 中的 onChange?
在 React 中,一些 HTML 元素,比如 input 和 textarea,具有 onChange 事件。onChange 事件是一个非常有用、非常常见的事件,用于捕获输入框中的文本变化。有时候,我们需要将多个参数同时传递给 onChange 事件处理函数,在本文中,我们将介绍如何实现这一目标。
网络技术联盟站
2023/06/07
2.7K0
安卓在子线程传值给主线程,通过Handler传值
昨晚上在进行http请求获取数据并修改listview的时候遇到了一个问题Only the original thread that created a view hierarchy can touch its views
SingYi
2022/07/14
2.1K0
安卓在子线程传值给主线程,通过Handler传值
iframe怎么将参数传递给vue 父组件
在子页面的iframe中想将参数传递给Vue父组件,可以使用postMessage()方法将数据发送给父窗口。父组件可以通过监听message事件来接收并处理这些数据。
王小婷
2023/08/10
1.4K0
使用JPA原生SQL查询在不绑定实体的情况下检索数据
在这篇博客文章中,我将与大家分享我在学习过程中编写的JPA原生SQL查询代码。这段代码演示了如何使用JPA进行数据库查询,而无需将数据绑定到实体对象。通过本文,你将了解如何使用原生SQL查询从数据库中高效地检索数据。
高久峰
2023/08/07
7390
Appium系列(十七)将Appium服务端口号通过参数传递给测试用例
在上一篇文章--Appium系列(十六)如何维护用例中定位元素,我们对于测试用例的定位的元素进行了维护,但是后续我们可能需要测试很多的手机,那么端口号不是唯一的,那么我们将如何维护现有的端口号呢。本文将揭秘。
雷子
2021/03/30
9970
Appium系列(十七)将Appium服务端口号通过参数传递给测试用例
gitignore编辑不生效的问题
最近项目遇到了一个问题,排查了好久,最后发现是Pod 依赖的私有组件的代码有问题,导致了打包的时候线上包出现了问题。
莫空9081
2021/09/10
1.5K0
在公司制度不规范的情况下,如何做好测试工作?
遇到这个好机会你还在等什么?如果说这个公司已经足够好了,那他还请你过来做什么?你的能力还足以让公司有更高的提升么?
软件测试君
2019/11/04
1.2K0
已有数据库情况下使用Python进行ORM操作
在实际测试中发现,需要插入大量的测试数据或者有依赖关系的数据 来达到测试的目的,这时我们可以使用python来简化和规范化该操作。
zx钟
2021/10/21
7400
点击加载更多

相似问题

将模型从视图(通过ActionLink )传递给操作

11

无法通过RedirectToAction将视图模型传递给新操作

20

通过创建操作将值传递给模型

21

通过视图包将模型传递给javascript

24

将模型子表传递给HTTPPOST控制器进行模型编辑

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文