【问题标题】:Serializing Model Data序列化模型数据
【发布时间】:2014-11-06 20:36:42
【问题描述】:

编辑

我正在开展一个项目,该项目将尝试预先批准客户的信用卡。这个应用程序

  1. 从传递客户信息的不同应用程序调用
  2. 使用 wcf 服务,该服务将执行各种操作,包括调用第三方 Web 服务以进行实际的信用审批

这个新系统是使用 ASP.NET MVC 开发的,我对它非常陌生。

所以,我已经开始工作了,我可以将特定数据传递给这个 mvc 应用程序并将信用结果显示到一个视图中。

此时,如果客户被批准,用户要么需要表明客户是否愿意接受报价。如果他们这样做,那么用户需要指出客户想要的四种信用卡产品中的哪一种。如果他们想要生成 ACH 付款等。如果客户拒绝报价,用户必须选择拒绝的原因。

好的,所以所有这些都可以正常工作。

我的问题在于如果验证失败该怎么办。我已经为条件验证指定了几个必需的 if 属性。如果用户忘记选择信用卡产品,如果客户接受了报价,则条件验证将失败。在这些罕见但可以想象的场景中,我需要发送信用结果,包括提供的卡产品、拒绝原因、客户名称等。

所以我真正需要了解的是如何将信用响应数据发送回我用于决策信息的控制器。

初始控制器简称为Index

[HttpPost]
public ViewResult Index ( PrescreenCCRequest request )
{
    WCFClient client = new WCFClient ( );

    PrescreenCCResult result = client.ProcessPrescreen ( request );

    return View ( result );
}

在此控制器的视图中,我为各种用户选项定义了一个表单

@using ( Html.BeginForm ( "Save", "Prescreen", FormMethod.Post ) )
{
    ...Control definitions left out...
}

最后,“保存”操作的控制器:

[HttpPost]
public ActionResult Save ( PrescreenModel formData )
{
    if ( !ModelState.IsValid )
    {
        return View ( "~/Views/Prescreen/Index.cshtml", formData );
    }

    ... Additional Code left out ...
    return View ( );
}

这就是我正在努力的方向

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5


    【解决方案1】:

    MVC DLL:

    如果您在使用参考管理器时找不到 dll,则听起来 MVC 可能没有正确安装,因为它们应该包含在框架参考中。这是我的 VS RM 中显示的内容

    我建议您使用 Visual Studio 中内置的 nuget package manager 安装 MVC

    跨控制器持久化数据:

    这是一个独立的主题,有多种方法。这取决于许多因素,例如您希望数据保留多长时间等。

    如果数据的持久性相当短暂,我会在跨请求访问时使用 Session 对象或 TempData 对象。

    序列化数据:

    数据是什么格式的?如果是 Json,我建议使用 NewtonSoft,因为它有一个非常灵活的对象序列化器/反序列化器,可用于将对象数据验证为自定义数据模型。

    【讨论】:

    • 感谢您的信息。我意识到我在那里混淆了几个问题。道歉。从持久性的角度来看,从初始控制器向下发送的原始数据只需要等待验证成功即可。我们的一些用户可能需要尝试几次。如果这似乎是 TempData 可以接受的,那么我可以研究一下。从序列化的角度来看,数据是一个类,而不是 JSON。我真的在寻找一种简单的方法来将视图的初始模型以及“编辑”模型发送回将保存“编辑”数据的控制器
    • @PaulStoner 基于我必须做出假设的信息。假设它是您正在使用的 WCF 服务。我建议您直接验证服务类,因为服务引用元数据将提供您编写任何验证逻辑所需的信息。我不确定为什么需要将数据传递给另一个控制器,因为我会亲自将验证逻辑从控制器中抽象出来,并在同一个控制器甚至更好的方法调用中返回验证错误或异常。请提供尽可能多的信息,我可以举个例子。请记得点赞。谢谢
    • 博斯曼,谢谢。我很想投票,但我还没有足够的代表。我将编辑我的问题以提供所需的信息。
    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 2016-10-27
    • 2016-01-20
    • 2021-04-25
    • 2018-08-05
    • 2021-03-23
    • 2020-02-04
    • 1970-01-01
    相关资源
    最近更新 更多