【发布时间】:2010-01-15 17:06:03
【问题描述】:
我打开一个 jQuery 对话框,在这个框中我进行了保存/取消。为了保存,我调用我的控制器,进行一些验证,保存或抛出异常 (MyPersonalException)。如果有异常,我会返回另一个视图(“MessageError”视图)以显示在弹出窗口中。我只想在模式框中看到“MyPersonalException”中可用的消息
我的问题: 1. 可以,但只适用于 Firefox 而不是 IE 不是 Chrome 2. 有没有其他方法,因为看起来很长的代码来显示一条消息。
控制器如下所示:
[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);
}
}
要调用对话框,我使用这段代码
jQuery(document).ready(function() { $(函数(){ /* 变量名 = $("#firstName"), 电子邮件 = $("#lastName"), 密码 = $("#isActive"), allFields = $([]).add(name).add(email).add(password), 提示 = $("#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) {
}
})
}
});
});
});
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>
【问题讨论】:
-
我更新了下面的答案,这应该可以让你做你想做的事,而无需自定义 jQuery ajax 对象。
标签: jquery asp.net-mvc exception jquery-ui