表格未正确保存到模型

时间:2020-11-04 18:41:58

标签: html validation asp.net-core-mvc

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

我已经花了很长时间了,无法弄清楚我的代码出了什么问题。我的其他字段(未包含在下面的代码中)可以正常工作,但即使是在诸如此类的隔离代码中使用,也只有这个特定字段会引起问题。

Create.cshtml

dd <- expand.grid(a = as.factor(1:3),
                  b = as.factor(1:4),
                  c = as.factor(1:2),
                  d= as.factor(1:8))
n <- nrow(dd <- dd[rep(seq_len(nrow(dd)), each = 10), ])

set.seed(17)

dM <- cbind(dd, x = round(rnorm(n), 1))
## randomly drop some
n <- nrow(dM <- dM[- sample(n, 50),])
dM <- within(dM, { A <- c(2,5,10)[a]
                   B <- c(-10,-1, 3:4)[b]
                   C <- c(-8,8)[c]
                   D <- c(10*(-5:-2), 20*c(0, 3:5))[d]
   Y <- A + B + A*B + C + D + A*D + C*x + rnorm(n)/10
   wts <- sample(1:10, n, replace=TRUE)
   rm(A,B,C,D)
})

X <- Matrix::sparse.model.matrix( ~ (a+b+c+d)^2 + c*x, data = dM)

Xd <- as(X,"matrix")

fmDense <- lm(dM[,"Y"]~Xd-1)

ss <- summary(fmDense)

r1 <- MatrixModels:::lm.fit.sparse(X, y = dM[,"Y"], method = "chol")

f <- summary_sparse(r1, X)

all.equal(do.call(cbind, f), ss$coefficients, check.attributes = F)
#TRUE

all.equal(predict_sparse(X, r1$coef)@x, predict(fmDense), check.attributes = F, check.names=F)
#TRUE

Model.cs

@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>

1 个答案:

答案 0 :(得分:-1)

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

View -> Controller -> Model

您需要遵循这种方式。发送之前,您已为模型准备好数据。