Html 表单未正确保存到模型

Html 表单未正确保存到模型,html,validation,asp.net-core-mvc,Html,Validation,Asp.net Core Mvc,我正在使用Asp.Net核心MVC创建一个表单,用户可以使用该表单提交一些信息。但是,我的select标记遇到问题(下面的示例)。每当我使用此表单时,它都不会通过数据验证(例如显示“请选择一个数字”),因为它总是返回一个空白。当我删除模型中的正则表达式时,它会在我的SQL表中存储一个“0” 我已经在这方面做了很长一段时间了,无法找出代码中的错误。我的其他字段(未包含在下面的代码中)工作正常,但只有这个特定字段会导致问题,即使在像这样的独立代码中使用时也是如此 Create.cshtml @mod

我正在使用Asp.Net核心MVC创建一个表单,用户可以使用该表单提交一些信息。但是,我的select标记遇到问题(下面的示例)。每当我使用此表单时,它都不会通过数据验证(例如显示“请选择一个数字”),因为它总是返回一个空白。当我删除模型中的正则表达式时,它会在我的SQL表中存储一个“0”

我已经在这方面做了很长一段时间了,无法找出代码中的错误。我的其他字段(未包含在下面的代码中)工作正常,但只有这个特定字段会导致问题,即使在像这样的独立代码中使用时也是如此

Create.cshtml

@model kpirep_dev.Models.Numbers

@{
   ViewData["Title"] = "Create";
}

<!DOCTYPE html>

<html>
<head>
   <meta name="viewport" content="width=device-width" />
   <title>Create</title>
   <style>
   </style>
</head>
<body>

   <hr />
   <form asp-action="Create">
       <div class="row">
           <div asp-validation-summary="ModelOnly" class="text-danger"></div>
               <div class="KPID">
                   <label asp-for="KPID" class="control-label">Number</label>
                   <select asp-for="KPID" name="KPID">
                       <option disabled selected value"">select a number</option>
                       <option value="1">1</option>
                       <option value="2">2</option>
                       <option value="3">3</option>
                   </select>
                   <span asp-validation-for="Number" class="text-danger"></span>
               </div>
           </div>
           <input type="submit" value="Create" class="btn btn-primary" />
           <a asp-action="Index" class="btn btn-secondary">Back</a>
       </div>
   </form>
</body>
</html>

首先,您需要向控制器请求,而不是向模型请求。 请求方式应该是这样的

View -> Controller -> Model

你需要沿着这条路走。在发送之前,您已经为您的模型准备好了数据。

Number在模型中?这可能是我为这个主题更改了一些东西的名称时出错的原因。更新:实际变量名为“KPID”(而不是“Number”)。在将变量重命名为“kpiNo”后,我没有其他问题。我的猜测是,由于它包含“ID”,它可能与实际的ID字段冲突?我在您的代码片段中没有看到KPID,请更新它,以便我们可以进一步讨论它。在那之前,我们只是猜测更新它。很抱歉,我不希望变量名在我的代码中起作用,所以我更改了它们。在我的模型中使用变量“KPID”会产生问题,但将其重命名为“kpiNo”会解决问题。问题与http请求到c#对象的不正确映射有关。不确定你的答案是否对OP有帮助
View -> Controller -> Model