C# Asp.net MVC 5模型验证不起作用
因此,我有一个ViewModel,所有属性都通过在其上具有所需属性来验证。当我提交表单时,它不会抛出任何错误消息,即名称字段是必需的 我想我已经找到了问题所在。在submit按钮中,我如何让按钮点击ActionList的HttpPost方法,因为此时它没有点击,因此modelstate没有被验证 视图:C# Asp.net MVC 5模型验证不起作用,c#,asp.net-mvc,validation,asp.net-mvc-4,html-helper,C#,Asp.net Mvc,Validation,Asp.net Mvc 4,Html Helper,因此,我有一个ViewModel,所有属性都通过在其上具有所需属性来验证。当我提交表单时,它不会抛出任何错误消息,即名称字段是必需的 我想我已经找到了问题所在。在submit按钮中,我如何让按钮点击ActionList的HttpPost方法,因为此时它没有点击,因此modelstate没有被验证 视图: 我可以看出你有两个问题 首先,您的按钮不是提交按钮。它是一个位于表单外部的链接。您必须将其移动到表单中,并使其成为提交按钮(或编写一些javascript,在单击时提交表单): @Displa
我可以看出你有两个问题 首先,您的按钮不是提交按钮。它是一个位于表单外部的链接。您必须将其移动到表单中,并使其成为提交按钮(或编写一些javascript,在单击时提交表单):
@DisplayNameFor(m=>m.Time)
@TextBoxFor(m=>m.Time,new{@class=“form control”})
@Html.ValidationMessageFor(m=>m.Time)
@*^^^^^提交*@
}
另外,
Html.ValidationSummary(true)
将从验证摘要中隐藏所有属性错误。这可能不是你想要的。如果你遇到那个问题。。从呼叫中删除true
。我可以看到您有两个问题
首先,您的按钮不是提交按钮。它是一个位于表单外部的链接。您必须将其移动到表单中,并使其成为提交按钮(或编写一些javascript,在单击时提交表单):
@DisplayNameFor(m=>m.Time)
@TextBoxFor(m=>m.Time,new{@class=“form control”})
@Html.ValidationMessageFor(m=>m.Time)
@*^^^^^提交*@
}
另外,
Html.ValidationSummary(true)
将从验证摘要中隐藏所有属性错误。这可能不是你想要的。如果你遇到那个问题。。从通话中删除true
。你能发布你的ViewModel吗?@CiganoMorrisonMendez我现在可以用了。谢谢:)你能发布你的ViewModel吗?@CiganoMorrisonMendez我现在可以用了。谢谢:)
<h2>@ViewBag.Title</h2>
<hr>
<div class="well">
@using (Html.BeginForm("BookingDetails", "Booking"))
{
@Html.ValidationSummary(true)
<div class="form-group">
@Html.DisplayNameFor(m => m.FirstName)
@Html.TextBoxFor(m => m.FirstName, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.FirstName)
</div>
<div class="form-group">
@Html.DisplayNameFor(m => m.Surname)
@Html.TextBoxFor(m => m.Surname, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Surname)
</div>
<div class="form-group">
@Html.DisplayNameFor(m => m.EmailAddress)
@Html.TextBoxFor(m => m.EmailAddress, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.EmailAddress)
</div>
<div class="form-group">
@Html.DisplayNameFor(m => m.MobileNumber)
@Html.TextBoxFor(m => m.MobileNumber, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.MobileNumber)
</div>
<div class="form-group">
@Html.DisplayNameFor(m => m.NumberOfPeople)
@Html.TextBoxFor(m => m.NumberOfPeople, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.NumberOfPeople)
</div>
<div class="form-group">
@Html.DisplayNameFor(m => m.Date)
@Html.TextBoxFor(m => m.Date, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Date)
</div>
<div>
@Html.DisplayNameFor(m => m.Time)
@Html.TextBoxFor(m => m.Time, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Time)
</div>
}
</div>
<div class="form-group">
@Html.ActionLink("Book my table", "BookingDetails", "Booking" new { @class ="btn btn-primary" })
</div>
// GET:
public ActionResult BookingDetails()
{
return View();
}
// Post
[HttpPost]
public ActionResult BookingDetails(BookingDetailsViewModel model)
{
if(ModelState.IsValid)
{
return RedirectToAction("BookingConfirmation");
}
return View(model);
}
<div>
@Html.DisplayNameFor(m => m.Time)
@Html.TextBoxFor(m => m.Time, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Time)
</div>
<input type="submit" class="btn btn-primary" /> <!-- move it inside the form -->
@* ^^^^ submit *@
} <!-- end of your form is here -->