我正在嘗試爲我的代碼添加驗證。驗證 - 用戶已被添加,MVC 4
當我輸入用戶名,並再次嘗試它,我得到一個錯誤說PRIMARY KEY約束
的違反事件,我有2個主鍵(SERIALNUMBER和productNumber)所以我不會能夠添加用戶第二次,但是當我這樣做,我得到一個錯誤頁面。
但我真的想要一條消息說用戶已經添加或在該行中的東西。
我嘗試了一些可以回答的問題,但是在圈子裏四處走動,所以我想問你們。
這是我的代碼
型號:
public string SerialNumber { get; set; }
public string ProductNumber { get; set; }
[Required(ErrorMessage = "Before you submit you must enter a valid UserName!")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
[Display(Name = "Username")]
public string UserName { get; set; }
[EmailAddress(ErrorMessage = "Invalid Email Address")]
[Display(Name = "Alternative Username")]
public string AltUserName { get; set; }
public ReadingsUsersForm(string Ser_Num)
{
SerialNumber = Ser_Num;
ProductNumber = cpctx.CustomerReadingsEntries.Where(s => s.ser_num == SerialNumber).Select(c => c.prod_um).FirstOrDefault();
UserName = null;
AltUserName = null;
}
控制器:
[HttpPost]
public ActionResult Save(EntrtyForm form)
{
var addForm = new M2CPDAL.Models.CustomerPortal.SerialUser();
addForm.ser_num = form.SerialNumber;
addForm.prod_num = form.ProductNumber;
addForm.UserName = form.UserName;
addForm.AltUserName = form.AltUserName;
cp.SerialUsers.Add(addForm);
cp.SaveChanges();
return RedirectToAction("Index");
}
public PartialViewResult GetAddEditReadings(string ser_num, string prod_num)
{
var model = new AddEditReadingsViewModel(id, ser_num, prod_num, uProfile.CustNums);
return PartialView("_ReadingsUsers", model);
}
的html代碼:
@using (Html.BeginForm("Save", "Device", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<fieldset>
<legend>Meter Reading Details</legend>
<div>
@Html.LabelFor(m => m.SerialNumber)
@Html.TextBoxFor(m => m.SerialNumber, new { @class = "form", @readonly = "readonly" })
@Html.ValidationMessageFor(m => m.SerialNumber)
</div>
<div>
@Html.LabelFor(m => m.ProductNumber)
@Html.TextBoxFor(m => m.ProductNumber, new { @class = "form", @readonly = "readonly" })
@Html.ValidationMessageFor(m => m.ProductNumber)
</div>
<div>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName, new { @id = "newColourReading", @class = "form-add" })
@Html.ValidationMessageFor(m => m.UserName)
<div id="ColourErrorMessage"></div>
</div>
<div>
@Html.LabelFor(m => m.AltUserName)
@Html.TextBoxFor(m => m.AltUserName, new { @id = "newColourReading", @class = "form-add2" })
@Html.ValidationMessageFor(m => m.AltUserName)
<div id="ColourErrorMessage"></div>
</div>
<div class="modal-footer">
<input type="submit" id="ButtonSave" value="Submit" class="btn btn-primary">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
</div>
}
etc...
所以在cp.SaveChanges();如果我第二次嘗試添加用戶,我會得到一個錯誤。
任何想法或方向我可以跟隨我在哪裏可以添加驗證,以檢查是否已添加或不。
調用數據庫檢查值是唯一的初始化
AddEditReadingsViewModel
,如果沒有,使用'ModelState.AddModelError()'添加一個錯誤,然後返回視圖來顯示它。在提交 – 2014-12-04 10:01:55