如何基于用户输入动态绑定一个模型到一个视图

本文关键字:一个 模型 视图 何基于 用户 输入 动态绑定 | 更新日期: 2023-09-27 18:14:07

我是新的mvc,我需要帮助绑定不同的模型,从什么是最初发送到视图的视图。

让我进一步解释

我有一个这样的模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UI.Data.Models.Claim.Shared.CustomerInfo;
namespace UI.Data.Models.Claim
{
    public abstract class CreateClaimViewmodel 
{
    public DateTime CreatedDate { get; set; }
    public UserFirstName UFname { get; set; }        
    public Customer Customer { get; set; }
   public CustomerAddress CustProvidedAddress { get; set; } 

    public List<Transactions.Transaction> Transactions { get; set; }
    public DiscrepancyType discreType {get; set;}
     public List<IDiscrepancy> discrepancy  { get; set; } // assumption
 }

}

我已经注意到idiscretify作为一个接口,因为这可能是一个不同的子类,基于用户在这个视图上选择什么。因此,当用户从一个下拉列表值中选择一个差异类型时,会弹出一个局部视图,其中包含该差异类型的相应问题。所有这些差异类型在我的应用程序中指向不同的模型/部分视图

 public enum DiscrepancyType
    {
        WithdrawalError,
        DepositError,
        CancelDetails,
        CanceledServiceSubscTransac,
        DuplicateTransaction,
        ChargedInsteadOfCredit,
        CreditNotReceived,
        DefectiveMerchantdise,
        DifferentAuthorizedAmount,
        GoodsServicesNotReceived,
        MerchandiseReturned,
        NotAsDescribed,
        PaidByAnotherMethod,
        TransacNotRecognized,
        UnauthorizedTransaction, // many more 
    }

我的问题来了

当我想显示基于下拉列表的部分视图时,该部分工作得很好。但是我现在明白了,当我将它发回控制器时,基于用户从下拉菜单中选择添加到视图(idiscredant属性)的类型的新对象不会绑定到模型,因为模型不再存在。我如何告诉我的控制器使用这个新模型而不是旧模型?

我尝试使用Jquery,但对于每个部分视图,我需要编写不同的Jquery代码,并创建json对象。是否有一种有效的方法,我可以告诉我的控制器,我张贴一个视图与相同的模型,但添加的对象类型。有24类使用/实现差异。

我认为另一个选项是使用@model Dynamic,但我不确定这是否会帮助我的场景

我知道这在许多公司很常见,我想知道为什么没有太多关于根据用户输入动态更改模型的文档。

如果我的术语不正确,请道歉,因为我仍在努力摆脱webforms思维。

提前感谢!

如何基于用户输入动态绑定一个模型到一个视图

我不确定我是否正确理解了你的问题,但如果你想实现一个功能,其中每个差异类型必须加载其列表,那么实现的一种方式是使用knockoutjs。它具有这种双向绑定,当您更改下拉菜单时,它会自动更改模型数据。它将加载List的值。你必须在脚本端创建一个类似于createcclaim的ViewModel。

我已经在我的应用程序中做了类似的功能,其中在地区的变化加载它的地区相关信息。我只有一个模型。