To pomogło dużo. W moim przypadku był to stół, w którym możliwe były również aktualizacje. W takim przypadku powyższe rozwiązanie nie działa. Dlatego chciałem podzielić się moim rozwiązaniem w tej sprawie.
W poniższym rozwiązaniu dodałem dodatkowe pole do przekazania do kontrolera (klucz podstawowy modelu). Następnie w kontrolerze sprawdzam, czy klucz podstawowy jest podany. Jeśli tak, to wiemy, że pochodzimy z witryny aktualizacji, ponieważ jest to jedyny przypadek, w którym mamy już identyfikator w modelu. Ostatnim krokiem jest sprawdzenie, czy ciąg znaków i klucz podstawowy są takie same. Jeśli oba są, jest OK, ponieważ nie zmieniliśmy niczego w ciągu znaków. Jeśli tylko ciąg znaków jest taki sam, ale nie identyfikator, oznacza to, że zmieniliśmy ciąg i zmieniliśmy go na inny istniejący ciąg znaków, więc zwracamy wartość false.
Model:
[Key]
[Display(Name = "Idee ID")]
public int intIdeaID { get; set; }
[Required(ErrorMessage = "Dieses Feld muss ausgefüllt werden")]
[Display(Name = "Idee")]
[Remote("ideaExists", "TabIdea", HttpMethod = "POST", ErrorMessage = "Es wurde bereits eine Idee mit dieser Bezeichnung erstellt", AdditionalFields = "intIdeaID")]
public string strIdea { get; set; }
Kontroler:
[HttpPost]
public JsonResult ideaExists(string strIdea, int? intIdeaID)
{
if (intIdeaID != null)
{
if (db.tabIdea.Any(x => x.strIdea == strIdea))
{
tabIdea existingTabIdea = db.tabIdea.Single(x => x.strIdea == strIdea);
if (existingTabIdea.intIdeaID != intIdeaID)
{
return Json(false);
}
else
{
return Json(true);
}
}
else
{
return Json(true);
}
}
else
{
return Json(!db.tabIdea.Any(x => x.strIdea == strIdea));
}
}
Warto również czytanie [Jak: wdrożenie zdalnego walidacji w ASP.NET MVC] (https://msdn.microsoft. com/en-us/library/gg508808% 28VS.98% 29.aspx) –
Dokładnie tego szukałem, ale nie działa z biblioteką twitterbootstrapmvc '@ Html.Bootstrap(). TextBoxFor (t => t. Email) .Placeholder ("Adres e-mail"). ShowValidationMessage (true) ' * // jak mogę sprawdzić/wywołać po stronie klienta tutaj z biblioteką hellperową twitterbootstrapmvc *' @ Html.ValidationMessageFor (t => t.Email) ' – aggie
Co powinno Robię, jeśli chcę sprawdzić nazwę użytkownika tylko w operacji zapisu, a nie w operacji aktualizacji. – Hemal