J'ouvre une boîte de dialogue jQuery, dans cette case je fais une sauvegarde/annulation. Pour enregistrer, j'appelle mon contrôleur, effectue une validation, sauvegarde ou lance Exception (MyPersonalException). S'il y a une exception, je retourne une autre vue (la vue "MessageError") à afficher dans le popup. Je veux juste voir dans la boîte modale message disponible dans « MyPersonalException »Message d'exception à l'interface utilisateur
Mes questions: 1. C'est un travail mais seulement avec Firefox ne IE pas Chrome 2. Y at-il une autre façon parce que regardons un lof de code pour simplement afficher un message.
Le regard du contrôleur comme ceci:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveOrUpdate(Guid id, string firstName, string LastName)
{
try
{
Employee employee = new Employee() { Id = id, FirstName = firstName, LastName = LastName };
_employeeService.SaveOrUpdate(employee);
return Index();
}
catch (MyPersonalException ex)
{
_model.ErrorMessage = ex.Message;
return View("MessageError", _model);
}
catch (Exception ex)
{
_model.ErrorMessage = ex.Message;
return View("MessageError", _model);
}
}
Pour appeler la boîte de dialogue, j'utilise ce code
jQuery (document) .ready (function() { $ (function() { /* var name = $ ("# firstName"), email = $ ("#nom"), password = $ ("# isActive"), allFields = $ ([]) .add (nom) .add (email) .add (mot de passe), tips = $ ("# validateTips"); */
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
modal: true,
buttons: {
Save: function() {
$.ajax({
type: "POST",
url: "/Employee/SaveOrUpdate",
data: {
id: getId(),
firstName: getFirstName(),
lastName: getLastName()
},
success: function(data) {
if (jqueryShowResult(data))
$("#DisplayError").html(data);
else {
employeeId = 0;
$(this).dialog('close');
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
}
})
},
Cancel: function() {
employeeId = 0;
$(this).dialog('close');
}
},
close: function() {
$("#gridEmpoyee").trigger("reloadGrid");
},
open: function() {
$.ajax({
type: "POST",
url: "/Employee/GetEmployee",
data: {
id: employeeId
},
success: function(data) {
$("#employeeDetail").html(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
}
})
}
});
});
});
Le jQueryShowResult
<script type="text/javascript">
jqueryShowResult = function(msg) {
var browser;
try //Internet Explorer
{
xmlDocTest = new ActiveXObject("Microsoft.XMLDOM");
browser = "IE";
}
catch (e) {
browser = "FF";
}
if (browser == "IE") {
try {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(msg);
var message = xmlDoc.getElementsByTagName("message")[0].childNodes[0].nodeValue;
var code = xmlDoc.getElementsByTagName("code")[0].childNodes[0].nodeValue;
return false;
}
catch (e) {
return true;
}
}
else {
var code = $(msg).find('code').text();
var message = $(msg).find('message').text();
if (code == "500") {
return false;
}
else {
return true;
}
}
};
</script>
J'ai mis à jour la réponse ci-dessous, cela devrait vous permettre de faire ce que vous voulez sans personnaliser l'objet jQuery ajax. –