【发布时间】:2014-12-04 09:57:33
【问题描述】:
我正在尝试向我的代码添加验证。
当我输入用户名并再次尝试时,我收到一条错误消息,提示违反 PRIMARY KEY 约束
由于我有 2 个主键(序列号和产品编号),所以我无法第二次添加用户,但是当我这样做时,我得到一个错误页面。
但实际上我想要一条消息说已经添加了用户或该行中的某些内容。
我尝试过目不转睛的回答,但一直在兜圈子,所以想问问你们。
这是我的代码
型号:
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();如果我第二次尝试添加用户,我会收到错误消息。
我可以遵循的任何想法或方向,我可以添加验证以检查是否已添加。
【问题讨论】:
-
调用数据库检查值是否唯一,如果不是,使用
ModelState.AddModelError()添加错误,然后返回视图显示。您还可以在提交之前使用[Remote]属性在客户端上执行验证
标签: asp.net asp.net-mvc asp.net-mvc-4 validation