這不是您可以從ViewModel/Client端檢查而不檢查數據庫中現有的值。
我所做的是當我去保存實體/對象時,我做了一個數據庫查找,它會通過驗證或驗證失敗。
繼承人使用實體框架/ LINQ的
using(var db = new DbContext())
{
return db.User.Any(x => x.Name.Equals(modelName, StringComparison.IgnoreOrdinalCase))
? false : true;
}
一個例子你沒有說你使用的是什麼平臺,所以它很難給你更具體的建議。
編輯:
如果是MVC Razor,這很容易。您可以通過使用正確的模型屬性名
[HttpPost]
public ActionResult AddUser(AddUserModel model)
{
if(ModelState.IsValid)
{
// input parameters passed - now check for uniqueness in db
using(var db = new DbContext())
{
if(!db.User.Any(x => x.Name.Equals(model.Name, StringComparison.IgnoreOrdinalCase)))
{
// Add to database
return;
}
else
{
// hard code string or get model property name via reflection etc
// Or if you want a general error you can use string.Empty as the key name and display via the validation summary
ModelState.AddModelError("Name", "Name must be unique");
// Fall through and return error
}
}
}
return View(model);
}
//查看
// if you've used the helper this will all you need to show
@Html.ValidationMessageFor(x => x.Name)
// Or..
@Html.ValidationSummary(true)
'unique'對於什麼將它們添加到ModelState中注入錯誤信息? –
我會使名稱字段唯一。像用戶名。 – user2122729
這通常會以某種形式映射到例如一個數據庫。因此,細節通常取決於您使用的是哪種數據層技術。 –