【问题标题】:Asp net Entering Price ValuesAsp net 输入价格值
【发布时间】:2018-06-05 08:08:25
【问题描述】:

在 Asp.net 网络核心表单中,我有字段价格。当我尝试输入像 255,55 这样的价格时,验证失败告诉我,这不是一个数字。 当我尝试 255.55 时,验证接受它,但它随后被读取为 2.555,00

这些是视图和模型:

    @model IEnumerable<Product>

@{ ViewBag.Title = "All Products";
    Layout = "_AdminLayout";}

<table class="table-striped table-bordered" style="width:80%">
    <tr>
        <th class="text-right">ID</th>
        <th>Name</th>
        <th class="text-right">Price</th>
        <th class="text-center">Actions</th>

    </tr>
    @foreach (Product item in Model)
    {

    <tr>
        <td>@item.ProductID</td>
        <td>@item.Name</td>
        <td class="text-right">@item.Price.ToString("c")</td>
        <td class="text-center">
            <form asp-action="Delete" method="post">
                <a asp-action="Edit" class="btn btn-sm btn-danger"
                   asp-route-productId="@item.ProductID">Edit</a>
                <input type="hidden" name="ProductID" value="@item.ProductID" />
                <button type="submit" class="btn btn-danger btn-sm">Delete</button>
             </form>
        </td>
    </tr>

    }
</table>
<div class="text-center"><a asp-action="Create" class="btn btn-default">Add Product</a></div>

    namespace SportStore.Models
    {
        public class Product
        {
            public int ProductID { get; set; }

            [Required(ErrorMessage ="Please enter a product name")]
            public string Name { get; set; }
            [Required(ErrorMessage = "Please enter a product description")]
            public string Description { get; set; }
            [Range(0.01, double.MaxValue, ErrorMessage = "Please enter a positive price")]
            [Required]
            public decimal Price { get; set; }
            [Required(ErrorMessage = "Please specify a category")]
            public string Category { get; set; }
        }
    }

为了让它工作,我在启动的配置方法中应用了以下补丁:

 var defaultDateCulture = "it-IT";
            var ci = new CultureInfo(defaultDateCulture);
            ci.NumberFormat.NumberDecimalSeparator = ".";
            ci.NumberFormat.CurrencyDecimalSeparator = ".";

            // Configure the Localization middleware
            app.UseRequestLocalization(new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture(ci),
                SupportedCultures = new List<CultureInfo>
                {
                    ci,
                },
                SupportedUICultures = new List<CultureInfo>
                {
                    ci,
                }
            });

但如果我替换“。”使用“,”我遇到了同样的问题

【问题讨论】:

  • 您是否启用了客户端验证并收到客户端错误(在这种情况下您需要重新配置验证程序。或者您是否收到服务器端错误,在这种情况下您需要设置您的应用的文化。

标签: c# asp.net-mvc forms currency


【解决方案1】:
[RegularExpression(@"^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$", ErrorMessage = "Please enter valid price")]

我认为您需要对价格使用正则表达式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2012-05-16
    • 1970-01-01
    相关资源
    最近更新 更多