2016-04-28 2 views
1

В моем EspaceClient/Compte.cshtml я возвращаю частичный вид. Он работает, но когда ModelState недействителен, я получаю только частичный вид без его основного вида.Модель недействительного частичного просмотра частичного возврата без основного вида

Спасибо

function partialCoordonnees() { 
     $.ajax({ 
     url: '/Utilisateurs/Edit/'+ @Model.Id, 
     dataType: "html", 
     success: function (data) { 
     $('.fifth').html(data); 
     } 
     }); 
}; 

В моей UtilisateursController

public ActionResult Edit(int? id) 
{ 
    Utilisateur utilisateur = db.Utilisateurs.Find(id); 
    return PartialView("_CoordonneesCompte", utilisateur); 
} 


public ActionResult Edit(Utilisateur utilisateur) 
{ 
    if (ModelState.IsValid) 
    { 
     db.Entry(utilisateur).State = EntityState.Modified; 
     db.SaveChanges(); 
     return RedirectToAction("Index", "EspaceClient", new { id=utilisateur.Id }); 
    } 
     return PartialView("_CoordonneesCompte", utilisateur); 
} 
+0

Проверьте отображаемый HTML - это, вероятно, полная страница, вставленная в целевой элемент. AJAX не будет следовать запросу перенаправления. Если вы хотите перенаправить, вам нужно будет проверить ответ на перенаправление 302 и перейти с помощью javascript в ваш обратный вызов. – Jasen

+0

Первый вызов частичного представления находится на полной странице $ ('. 5th'). Html (data); Проблема заключается в этом возврате PartialView ("_ CoordonneesCompte", utilisateur), когда модель недействительна. Я не знал, как я делаю то, что ты меня торопишь – Mercenaire

ответ

1

не выполняют проверку на стороне сервера с ModelState.IsValid

идти на стороне клиента проверки с unobstrusive библиотеки JQuery

добавить jquery.unobtrusive-ajax.min.js и jquery.validate.min.js в вашем cshtml

[Пример]

//this code goes in your partialview 
$(function(){ 
    //allow the validation framework to re-prase the DOM 
    jQuery.validator.unobtrusive.parse(); 

    //or to give the parser some context, supply it with a selector 
    //jQuery validator will parse all child elements (deep) starting 
    //from the selector element supplied 
    jQuery.validator.unobtrusive.parse("#formId"); 
}); 


//then in your parent page handle the form submission 
$(function(){ 
    $("#SubmitButton").click(function(){ 
    if (!$("#Form1").valid()){ 
     return false; 
    } 
    }); 
}); 

этот пример взят формы Here

Надежда это поможет вам ...

Смежные вопросы