sin*_*ina 1 c# asp.net asp.net-mvc asp.net-core
Input string was not in a correct format.当我想发布表单时出现错误。\n它甚至没有达到目标操作
但我之前没有这个问题
\n错误:
\nFormatException: Input string was not in a correct format.\nSystem.Text.ValueStringBuilder.ThrowFormatError()\nSystem.Text.ValueStringBuilder.AppendFormatHelper(IFormatProvider provider, string format, ParamsArray args)\nstring.FormatHelper(IFormatProvider provider, string format, ParamsArray args)\nstring.Format(IFormatProvider provider, string format, object arg0)\nSystem.ComponentModel.DataAnnotations.ValidationAttribute.FormatErrorMessage(string name)\nSystem.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(object value, ValidationContext validationContext)\nSystem.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(object value, ValidationContext validationContext)\nMicrosoft.AspNetCore.Mvc.DataAnnotations.DataAnnotationsModelValidator.Validate(ModelValidationContext validationContext)\nMicrosoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.ValidateNode()\nMicrosoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitSimpleType()\nMicrosoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitImplementation(ref ModelMetadata metadata, ref string key, object model)\nMicrosoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Visit(ModelMetadata metadata, string key, object model)\nMicrosoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitChildren(IValidationStrategy strategy)\nMicrosoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitComplexType(IValidationStrategy defaultStrategy)\nMicrosoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitImplementation(ref ModelMetadata metadata, ref string key, object model)\nMicrosoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Visit(ModelMetadata metadata, string key, object model)\nMicrosoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)\nMicrosoft.AspNetCore.Mvc.ModelBinding.ObjectModelValidator.Validate(ActionContext actionContext, ValidationStateDictionary validationState, string prefix, object model, ModelMetadata metadata, object container)\nMicrosoft.AspNetCore.Mvc.ModelBinding.ParameterBinder.EnforceBindRequiredAndValidate(ObjectModelValidator baseObjectValidator, ActionContext actionContext, ParameterDescriptor parameter, ModelMetadata metadata, ModelBindingContext modelBindingContext, ModelBindingResult modelBindingResult, object container)\nMicrosoft.AspNetCore.Mvc.ModelBinding.ParameterBinder.BindModelAsync(ActionContext actionContext, IModelBinder modelBinder, IValueProvider valueProvider, ParameterDescriptor parameter, ModelMetadata metadata, object value, object container)\nSystem.Threading.Tasks.ValueTask<TResult>.get_Result()\nSystem.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\nMicrosoft.AspNetCore.Mvc.Controllers.ControllerBinderDelegateProvider+<>c__DisplayClass0_0+<<CreateBinderDelegate>g__Bind|0>d.MoveNext()\nMicrosoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)\nMicrosoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)\nMicrosoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)\nMicrosoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\nMicrosoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()\nMicrosoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\nMicrosoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\nMicrosoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\nMicrosoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)\nMicrosoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)\nRun Code Online (Sandbox Code Playgroud)\n形式:
\n@model Project.Models.Product\n\n@{\n ViewData["Title"] = "Create";\n Layout = "~/Views/Shared/_AdminLayout.cshtml";\n}\n\n<h1>Add Product</h1>\n\n<hr />\n<div class="row">\n <form id="CreateForm" asp-action="Create" enctype="multipart/form-data">\n <div class="col-md-8">\n\n <div asp-validation-summary="ModelOnly" class="text-danger"></div>\n <div class="form-group">\n <label asp-for="Price" class="control-label"></label>\n <input type="number" name="Price" class="form-control" />\n <span asp-validation-for="Price" class="text-danger"></span>\n </div>\n <div class="form-group">\n <label asp-for="Name" class="control-label"></label>\n <input type="text" name="Name" class="form-control" />\n <span asp-validation-for="Name" class="text-danger"></span>\n </div>\n <div class="form-group">\n <label asp-for="ShortDescription" class="control-label"></label>\n <textarea name="ShortDescription" class="form-control" id="ShortDescription"></textarea>\n <span asp-validation-for="ShortDescription" class="text-danger"></span>\n </div>\n <div class="form-group">\n <label asp-for="Description" class="control-label"></label>\n <textarea name="Description" class="form-control" id="Description"></textarea>\n <span asp-validation-for="Description" class="text-danger"></span>\n </div>\n <div class="form-group">\n <input type="submit" value="Create" class="btn btn-primary" />\n </div>\n\n </div>\n <div class="col-md-4">\n <div class="panel panel-primary">\n <div class="panel-heading">picture</div>\n <div class="panel-body">\n <img id="productimage" class="thumbnail" src="/images/Products/Original/nophoto.jpg" />\n <div class="form-group">\n <input type="file" name="img" id="uploadimage" onchange="loadFile(event)" />\n <span asp-validation-for="ImageName" class="text-danger"></span>\n </div>\n </div>\n </div>\n\n <div class="file-upload-wrapper"> \n <input name="file" id="File" onchange='getFileName()' type="file" class="file-upload-field" value="">\n </div> \n <label id="FileName"></label>\n\n </div>\n\n\n\n </form>\n</div>\n\n@section Scripts {\n @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}\n <script src="https://cdn.ckeditor.com/4.16.2/standard/ckeditor.js"></script>\n <script>\n\n function readURL(input) {\n\n if (input.files && input.files[0]) {\n var reader = new FileReader();\n\n reader.onload = function (e) {\n $('#productimage').attr('src', e.target.result);\n }\n\n reader.readAsDataURL(input.files[0]);\n }\n }\n\n $("#uploadimage").change(function () {\n readURL(this);\n });\n CKEDITOR.replace('Description');\n CKEDITOR.replace('ShortDescription');\n function getFileName() {\n let file = document.getElementById('File');\n\n let lbl = document.getElementById('FileName');\n lbl.innerHTML = file.value.replace(/.*(\\/|\\\\)/, '');\n }\n </script>\n}\n\nRun Code Online (Sandbox Code Playgroud)\n模型:
\n public class Product\n {\n [Key]\n public int ProductId { get; set; }\n [Display(Name ="\xd9\x82\xdb\x8c\xd9\x85\xd8\xaa")]\n [Required(ErrorMessage ="\xd9\x84\xd8\xb7\xd9\x81\xd8\xa7 {\xdb\xb0} \xd8\xb1\xd8\xa7 \xd9\x88\xd8\xa7\xd8\xb1\xd8\xaf \xda\xa9\xd9\x86\xdb\x8c\xd8\xaf")]\n\n public uint Price { get; set; }\n [Display(Name = "\xd9\x86\xd8\xa7\xd9\x85 \xd9\x85\xd8\xad\xd8\xb5\xd9\x88\xd9\x84")]\n [Required(ErrorMessage = "\xd9\x84\xd8\xb7\xd9\x81\xd8\xa7 {\xdb\xb0} \xd8\xb1\xd8\xa7 \xd9\x88\xd8\xa7\xd8\xb1\xd8\xaf \xda\xa9\xd9\x86\xdb\x8c\xd8\xaf")] \n [MaxLength(50)]\n public string Name { get; set; }\n [Display(Name = "\xd8\xaa\xd9\x88\xd8\xb6\xdb\x8c\xd8\xad \xda\xa9\xd9\x88\xd8\xaa\xd8\xa7\xd9\x87")]\n [Required(ErrorMessage = "\xd9\x84\xd8\xb7\xd9\x81\xd8\xa7 {\xdb\xb0} \xd8\xb1\xd8\xa7 \xd9\x88\xd8\xa7\xd8\xb1\xd8\xaf \xda\xa9\xd9\x86\xdb\x8c\xd8\xaf")]\n [MaxLength(1500)]\n public string ShortDescription { get; set; }\n [Display(Name = "\xd8\xaa\xd9\x88\xd8\xb6\xdb\x8c\xd8\xad \xda\xa9\xd8\xa7\xd9\x85\xd9\x84")]\n [Required(ErrorMessage = "\xd9\x84\xd8\xb7\xd9\x81\xd8\xa7 {\xdb\xb0} \xd8\xb1\xd8\xa7 \xd9\x88\xd8\xa7\xd8\xb1\xd8\xaf \xda\xa9\xd9\x86\xdb\x8c\xd8\xaf")]\n public string Description { get; set; }\n [MaxLength(42)]\n public string ImageName { get; set; } \n [Display(Name = "\xd9\x81\xd8\xa7\xdb\x8c\xd9\x84")]\n [Required(ErrorMessage = "\xd9\x84\xd8\xb7\xd9\x81\xd8\xa7 {\xdb\xb0} \xd8\xb1\xd8\xa7 \xd9\x88\xd8\xa7\xd8\xb1\xd8\xaf \xda\xa9\xd9\x86\xdb\x8c\xd8\xaf")]\n [MaxLength(42)]\n public string File { get; set; } \n public DateTime Date { get; set; }\n }\nRun Code Online (Sandbox Code Playgroud)\n行动:
\n [HttpPost]\n [ValidateAntiForgeryToken]\n public async Task<IActionResult> Create([Bind("ProductId,Price,Name,ShortDescription,Description,ImageName,File")] Product product, IFormFile img,IFormFile file)\n {\n if (ModelState.IsValid)\n {\n if (file==null)\n {\n ViewBag.Error = "\xd9\x84\xd8\xb7\xd9\x81\xd8\xa7 \xd9\x81\xd8\xa7\xdb\x8c\xd9\x84 \xd8\xb1\xd8\xa7 \xd8\xa7\xd8\xb6\xd8\xa7\xd9\x81\xd9\x87 \xda\xa9\xd9\x86\xdb\x8c\xd8\xaf";\n return View(product);\n\n }\n product.Date = DateTime.Now;\n product.ImageName = "nophoto.jpg";\n if (img != null && img.IsImage())\n {\n product.ImageName = Guid.NewGuid().ToString() + Path.GetExtension(img.FileName);\n string savePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/images/Products/Original", product.ImageName);\n\n using (var stream = new FileStream(savePath, FileMode.Create))\n {\n img.CopyTo(stream);\n }\n\n ImageConvertor imgResizer = new ImageConvertor();\n string thumbPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/images/Products/Thumb", product.ImageName);\n\n imgResizer.Image_resize(savePath, thumbPath, 150);\n }\n _context.Add(product);\n await _context.SaveChangesAsync();\n return RedirectToAction(nameof(Index));\n }\n return View(product);\n }\nRun Code Online (Sandbox Code Playgroud)\n
ValidationAttribute.FormatErrorMessage()正在投掷Input string was not in a correct format错误。
这是因为您的模型中存在错误消息。例如[Required(ErrorMessage = "\xd9\x84\xd8\xb7\xd9\x81\xd8\xa7 {\xdb\xb0} \xd8\xb1\xd8\xa7 \xd9\x88\xd8\xa7\xd8\xb1\xd8\xaf \xda\xa9\xd9\x86\xdb\x8c\xd8\xaf")]
该错误是因为{}. 它在 C# 中具有特殊含义。所以你必须使用转义字符。
例子:(ErrorMessage = "Your characters should be in: !#$%&()*+,-./:;<=>?@[]^_{{|}}~"
所以为了转义{,你必须使用 double{。
| 归档时间: |
|
| 查看次数: |
4959 次 |
| 最近记录: |