繁体   English   中英

如何修复 ModelState.IsValid 以按出席方式工作?

[英]How can i fix ModelState.IsValid to work as attended?

嘿,我不确定这里发生了什么,我以前做过,但效果很好。 但是现在我的 ModelState.IsValid 无法正常工作。 在我的 model 视图中,我将其设置为如果文本框留空,它将不会执行 if 语句中的代码,但当它为空时返回 true。 此外,当我出于某种原因在 model CreaditCalculator 中输入它们时,似乎我的字段或未被设置。

Controller: CreditCardCalculatorController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using reviewCreditCardPaymentCalculator.Models;

namespace reviewCreditCardPaymentCalculator.Controllers
{
    public class CreditCardCalculatorController : Controller
    {
        // GET: CreditCardCalculator
        [HttpPost]
        public ActionResult Index(CreditCalculator credit)
        {
            if (ModelState.IsValid)
            {
                decimal financeCharge = 0.0m;
                decimal newBalance = 0.0m;
                decimal minPayment = 0.0m;

               
                if (credit.OldBalance <= 20)
                {
                    financeCharge = credit.OldBalance * 0.015m;

                    newBalance = credit.OldBalance * 1.015m + credit.Charge  - credit.Credit;

                    minPayment = newBalance;
                }
                else
                {
                    financeCharge = credit.OldBalance * 0.015m;
                    newBalance = credit.OldBalance * 1.015m + credit.Charge - credit.Credit;

                    minPayment = (newBalance - 20) * 1.10m;
                }

                ViewBag.Message = $"Finance Charge: {string.Format("{0:C}", financeCharge)}\r\n" +
                                    $"New Balance: {string.Format("{0:C}", newBalance)}\r\n" +
                                    $"Min Payment: { string.Format("{0:C}", minPayment)}";
            }

            return View();
        }


        [HttpGet]
        public ActionResult Index()
        {
            return View();
        }
    }
}

Model: CreditCalculator

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using reviewCreditCardPaymentCalculator.Controllers;

namespace reviewCreditCardPaymentCalculator.Models
{
    public class CreditCalculator
    {
        [Required(ErrorMessage = "Please enter your old balance")]
        public int OldBalance { get; set; }

        [Required(ErrorMessage = "Please enter your new charge amount")]
        public int Charge { get; set; }

        [Required(ErrorMessage = "Please enter your credit amount")]
        public int Credit { get; set; }
    }
}


View

@model reviewCreditCardPaymentCalculator.Models.CreditCalculator

@{
    ViewBag.Title = "Credit Card Calculator";
}

<h2>Credit Card Payment Calculator</h2>

@using (Html.BeginForm())
{
    @Html.ValidationSummary();

    <p><label>Old Balance: </label> @Html.TextBoxFor(m => m.OldBalance)</p>

    <p><label>Charges: </label> @Html.TextBoxFor(m => m.Charge)</p>

    <p><label>Credit: </label> @Html.TextBoxFor(m => m.Credit)</p>

    <p><input type="submit" value="Calculate" /></p>

    @ViewBag.Message

}

使用@using (Html.BeginForm("Index", "CreditCardCalculatorController", FormMethod.Post))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM