處理我的第一個ASP.NET MVC應用程序,並有一些表單驗證問題。Html.beginform驗證服務器端和客戶端端
我有我的模型:
public class InfoFormEmplModel
{
public int supID { get; set; }
public string description { get; set; }
public InfoFormEmplModel() {}
}
注意,這種模式並不代表在我DATABSE任何表。現在
,在我看來:
@using Portal.Models
@model InfoFormEmplModel
@{
ViewBag.Title = "Form";
}
@using (Html.BeginForm())
{
<b>Sup</b> @Html.TextBoxFor(x => x.supID)
<p>Description</p>
@Html.TextAreaFor(x => x.description)<br><br>
<input type="submit" name="Save" value="Soumettre" />
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
我需要做一些驗證,該字段必須不能是空的,我也有檢查supId提供存在於我的數據庫(服務器端驗證)
我想一些驗證添加到我的模型:
public class InfoFormEmplModel
{
[Required (ErrorMessage = "Superior ID required")]
public int supID { get; set; }
[Required (ErrorMessage = "Description required")]
public string description { get; set; }
public InfoFormEmplModel() {}
}
,並還增加了@ Html.ValidationMessageFor我的看法:
@using Portal.Models
@model InfoFormEmplModel
@{
ViewBag.Title = "Form";
}
@using (Html.BeginForm())
{
<b>Sup</b> @Html.TextBoxFor(x => x.supID)
@Html.ValidationMessageFor(x => x.supID)
<p>Description</p>
@Html.TextAreaFor(x => x.description)<br><br>
@Html.ValidationMessageFor(x => x.description)
<input type="submit" name="Save" value="Soumettre" />
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
我的控制器看起來是這樣的:
[HttpPost]
public PartialViewResult invform(InfoFormEmplModel form)
{
//check if supID exists
bool exists = librairie.supExists(form.supID);
if (!exists)
{
return PartialView("ErreurDuplicat");
}
return PartialView("Success");
}
當我離開supID空,驗證似乎沒有occur..My控制器就向我的模型到檢查Superieur的標識是另一個類在數據庫中但supID沒有任何價值。我期待,在控制器進行之前,我會看到網頁上的錯誤消息..
此外,一旦我檢查如果supID存在數據庫中,我如何顯示錯誤消息在我的看法,所以用戶可以輸入一個有效的supID?
您在視圖中使用的模型與您應用驗證的模型不同。它應該是'@model InfoFormulaireEmployeModele'。 – DCruz22
糟糕,我糾正了這一點。我對代碼進行了一些修改,因此它更小,並且沒有一堆法語變量。 –
但是,您確定這是您正在使用的代碼嗎?您的視圖和模型中的屬性命名方式不同。您只需將代碼添加到當前的模型,視圖和控制器中以避免混淆。 – DCruz22