如何从MVC 4中的SQL Express验证INT值



我有这个 create view:

 <div class="editor-field">
 @Html.TextBoxFor(model => model.First, new { @id = "id1"})     
 @Html.ValidationMessageFor(model =>model.First)       
 </div>

和文本框后的提交按钮:

<input type="submit" value="Create" />

模型的一部分类看起来像这样:

public int? First { get; set; }

这是我的web.config:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

因此,在发布该数据库之前,我需要先检查值是否已经在数据库中。如果数据库中的值已经添加一些错误。

我了解ModelState.AddModelError的部分,但是我无法获得的是:每次我检查值时,我都不会从数据库中获得结果,但是它检查表单文本框是否为空。

请帮忙。预先感谢。

一旦张贴值,您将需要在服务器端进行检查。

在这种情况下,您可以做的是运行查询以在页面发布后检查此问题...如果您的验证条件失败,则可以手动添加错误并返回相同的视图。向客户端,它看起来就像是通过不引人注目的验证来接收错误的一样。

我不确定您的数据层是如何设置的,因此我不会进入运行查询的详细信息,但是,这是您处理控制器中添加验证错误的方式...

ModelState.AddModelError("First", "Number in Use - Bad User!");

然后,您可以简单地将视图返回正常,他们将能够看到错误/更正问题

return View(model);

您可以在控制器中使用 First值的记录手动检查。类似:

public ActionResult foo(X x)
{
    var a= /* select where First=x.First */
    if(a!=null)
    {
        ModelState.AddModelError(Params);
    }
    if (ModelState.IsValid)
    /* rest of the code */
}

您可以在此答案中创建自己的自定义验证器:通过数据通道创建自定义验证?这里的另一个示例:MSDN

最新更新