如何基于用户输入动态绑定一个模型到一个视图
本文关键字:一个 模型 视图 何基于 用户 输入 动态绑定 | 更新日期: 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。
我已经在我的应用程序中做了类似的功能,其中在地区的变化加载它的地区相关信息。我只有一个模型。