Asp.net mvc 3 将值集成到enum(字典)中,然后根据表单中的用户选择进行计算的最佳方法

Asp.net mvc 3 将值集成到enum(字典)中,然后根据表单中的用户选择进行计算的最佳方法,asp.net-mvc-3,Asp.net Mvc 3,任何指导或给我举个例子都将不胜感激(我无法在Google Plex上制定一个好的搜索词) 我有一个使用枚举的模型,我在字典中定义了枚举,然后在视图上用@Html.radiobutton等进行渲染 以下是我的模型的一个示例: public PaymentPlanList PaymentPlan { get; set; } public enum PaymentPlanList { PaymentPlan_One, Pa

任何指导或给我举个例子都将不胜感激(我无法在Google Plex上制定一个好的搜索词)

我有一个使用枚举的模型,我在字典中定义了枚举,然后在视图上用@Html.radiobutton等进行渲染

以下是我的模型的一个示例:

public PaymentPlanList PaymentPlan { get; set; }
        public enum PaymentPlanList
        {
            PaymentPlan_One,
            PaymentPlan_Two,
        }
        public class PaymentPlanDictionary
        {
            public static readonly Dictionary<PaymentPlanList, string> paymentplanDictionary = new Dictionary<PaymentPlanList, string>
            {
            { PaymentPlanList.PaymentPlan_One, "One full payment in advance (receive the lowest price)." },
            { PaymentPlanList.PaymentPlan_Two, "Two payments: first payment of 50% due up front, the balance of 50% due within 30 days (increases fee by $100)." },
            };
            static string ConvertPaymentPlan(PaymentPlanList paymentplanlist)
            {
                string name;
                return (paymentplanDictionary.TryGetValue(paymentplanlist, out name))
                    ? name : paymentplanlist.ToString();
            }
            static void Main()
            {
                Console.WriteLine(ConvertPaymentPlan(PaymentPlanList.PaymentPlan_One));
                Console.WriteLine(ConvertPaymentPlan(PaymentPlanList.PaymentPlan_Two));
            }
        }
public PaymentPlanList PaymentPlan{get;set;}
公共枚举付款计划列表
{
薪酬计划第一,
薪酬计划二,
}
公共类PaymentPlanDictionary
{
公共静态只读词典paymentplanDictionary=新词典
{
{PaymentPlanList.PaymentPlan_One,“提前一次全额付款(收到最低价格)。”,
{PaymentPlanList.PaymentPlan_Two,“两笔付款:第一笔50%的预付款,剩余50%的预付款在30天内到期(费用增加100美元)。”,
};
静态字符串转换PaymentPlan(PaymentPlanList PaymentPlanList)
{
字符串名;
return(paymentplanDictionary.TryGetValue(paymentplanlist,out name))
?名称:paymentplanlist.ToString();
}
静态void Main()
{
Console.WriteLine(ConvertPaymentPlan(PaymentPlanList.PaymentPlan_One));
Console.WriteLine(ConvertPaymentPlan(PaymentPlanList.PaymentPlan_-Two));
}
}
为完整起见,以下是我对上述内容的看法:

<p>
    @Html.RadioButtonFor(m => m.PaymentPlan, "PaymentPlan_One")
    One full payment in advance (receive the lowest price).
</p>
<p>
    @Html.RadioButtonFor(m => m.PaymentPlan, "PaymentPlan_Two")
    Two payments: first payment 50% due up front, the balance of 50% due within 30 days (increases fee by $100).
</p>

@Html.radiobutton(m=>m.PaymentPlan,“PaymentPlan\u One”)
提前一次全额付款(收到最低价格)。

@RadioButton(m=>m.PaymentPlan,“PaymentPlan\u Two”) 两次付款:第一次付款50%提前到期,剩余50%在30天内到期(费用增加100美元)。

这是一个报价系统,我让用户填写。对于这项特殊服务,假设我收取1000美元。这是底价。根据用户的输入,这个价格将会改变,我想向用户展示这一点。因此,如果用户选择第一个选项,价格保持不变。如果用户选择第二个选项,费用将增加100.00美元

这是指数变化的,因为有更多的输入影响价格(如果选择)

最后,根据用户输入,我需要计算总数。我正在渲染一个视图,该视图将显示总计。我在考虑使用一些{}块和if/else if语句,要么a)如果所选内容不增加总额,则不显示任何内容,要么b)显示额外金额(例如$100.00),然后显示总额

类似于(为了清晰起见在此处编辑):

  • 基本服务:$1000.00
  • 加载项服务1:$100.00(仅当用户选择“PaymentPlan_-One”进行两次各50%的付款时(从PaymentPlanList枚举中),否则隐藏(不添加$100.00),如果用户选择“PaymentPan_-One”并全额付款)
  • 附加服务2:$0.00(这是隐藏的,并且是$0.00或无值,因为用户没有从单独的枚举中选择任何内容,但是如果选择,则$100.00的值将被添加,如果选择,则总计$1200.00;或者,如果列表中有3个或更多项,我该如何处理?例如,选项1是$0.00,选项2是$100.00和选项2_三个是200美元)
  • 总计:1100.00美元

谢谢您的帮助。

让我们看看我是否正确理解您的要求:

  • 应用程序需要将价格添加到基价,具体取决于 选择插件服务
  • 这些选择来自基于枚举的词典
  • 因此,我们希望根据Enum存储价格,以将数据关联保持在一个位置
可以针对枚举存储单个值:

    public enum PaymentPlanList
    {
        PaymentPlan_One = 100,
        PaymentPlan_Two = 200,
    }
然而,我认为这对于我们的需求来说不够灵活-枚举只允许整数,并且通常在中以这种方式使用(其中值是2的倍数)

我认为这里更好的解决方案可能是使用一个可以包含关于哪些服务可用、它们的成本以及哪些服务与其他服务组合有效的逻辑的


上有一个机票定价示例(听起来与此处的域概念类似),它根据用户选择在客户端网页上重新计算旅行机票价格。

让我们看看我是否正确理解您的要求:

  • 应用程序需要将价格添加到基价,具体取决于 选择插件服务
  • 这些选择来自基于枚举的词典
  • 因此,我们希望根据Enum存储价格,以将数据关联保持在一个位置
可以针对枚举存储单个值:

    public enum PaymentPlanList
    {
        PaymentPlan_One = 100,
        PaymentPlan_Two = 200,
    }
然而,我认为这对于我们的需求来说不够灵活-枚举只允许整数,并且通常在中以这种方式使用(其中值是2的倍数)

我认为这里更好的解决方案可能是使用一个可以包含关于哪些服务可用、它们的成本以及哪些服务与其他服务组合有效的逻辑的

上有一个机票定价示例(听起来与此处的域概念类似),它根据用户选择在客户端网页上重新计算旅行机票价格