Odwołanie jquery jeśli stan modelu jest niepoprawny Chcę pokazać komunikat o błędzie walidacji za pomocą dyskretnego sprawdzania jquery. Stworzyłem przykładową aplikację. ViewModel w aplikacji jest jak poniżejJquery post i dyskretna walidacja ajaxów nie działa mvc 4
public class CityModel
{
public int Id { get; set; }
[Display(Name = "City")]
[Required(ErrorMessage = "City is required")]
public string City { get; set; }
}
a kontroler posiada następujące metody działania
public ActionResult City()
{
var cities = GetCities();
return View(cities);
}
[HttpPost]
public ActionResult SaveCity(CityModel cityModel)
{
if (ModelState.IsValid)
{
//Save City
return null;
}
else
{
return View();
}
}
public List<CityModel> GetCities()
{
var citiesList = new List<CityModel>
{
new CityModel() {Id = 1, City = "London"},
new CityModel() {Id = 2, City = "New York"}
};
return citiesList;
}
Widoki mają następujące narzuty
@model List<CityModel>
<h2>Cities</h2>
@Html.ValidationSummary(true)
@using (@Html.BeginForm(null, null, FormMethod.Post, new { id = "frmSite", name = "frmSite" }))
{
@Html.EditorForModel()
<input type="submit" name="Sumbit" onclick=" SaveCity(); return false; " />
}
<script>
function SaveCity() {
$.ajax({
type: "POST",
url: "/Home/SaveCity",
contentType: "application/html; charset=utf-8",
data: {
Id: $('.cityId').val(),
City: $('.cityName').val()
},
success: function (data) {
}
});
}
</script>
A redaktor szablon wygląda jak
@model CityModel
<table class="table">
<tr>
<td>
@Html.TextBoxFor(x => x.Id, new {@class = "cityId"})
</td>
</tr>
<tr>
<td>
@Html.TextBoxFor(x => x.City, null, new {@class = "cityName"})
@Html.ValidationMessageFor(x => x.City)
</td>
</tr>
</table>
Sprawdziłem <script src="/Scripts/jquery-1.10.2.js"></script> <script src="/Scripts/jquery.validate.js"></script> <script src="/Scripts/jquery.validate.unobtrusive.js"></script>
są zawarte na stronie oraz <add key="UnobtrusiveJavaScriptEnabled" value="true" />
jest obecny w pliku web config
czy ustawiłeś '@Html.ValidationSummary (true)' w swoim formularzu? – Manoj
tak. Jego ustawieniem jest true – rumi
nie jest to 'content:" application/html; charset = utf-8 ",' powinno być 'contentType:" application/json; charset = utf-8 "'. – Jai