我在ActionResult中有这段代码
public ActionResult Copy( int bvVariableid ) {
var iReturn = _bvRepository.CopyBenefitVariable( bvVariableid, CurrentHealthPlanId, CurrentControlPlanId, _bvRepository.GetSecInfo( ).UserId, IsNascoUser());
if (iReturn == -999)
return new JavaScriptResult() { Script = "alert(Unique variable name could not be created');" };
if( iReturn != -1 )
return Json( new { RedirectUrl = string.Format( "/BvIndex/Index/{0}?bvIndex-mode=select", iReturn ) } );
return RedirectToRoute( "Error" );
}
这是我在视图中的代码。
CopyBenefitVariable = function (bvId, bvName) {
if (confirm('Are you sure you want to copy from the Benefit Variable ' + bvName + ' ?')) {
$.post(
"/BvIndex/Copy/",
{ bvVariableid: bvId },
function (data) {
window.location = data.RedirectUrl;
}, "json");
}
};
当IReturn为-999时,我的页面上没有获得JavaScriptResult警告框。
这是我在这里做错了吗?
任何人都可以帮助我。
由于
答案 0 :(得分:1)
我知道,这一行有一个错误:
return new JavaScriptResult() { Script = "alert(Unique variable name could not be created');" };
更正:
return new JavaScriptResult() { Script = "alert('Unique variable name could not be created');" };
答案 1 :(得分:0)
如果您愿意,可以标记我的答案,但人们普遍认为JavaScriptResult
是ASP.NET MVC团队的一个不好的举动。话虽这么说,您的样本已经为您的一个条件返回Json
操作结果。您可以对两个项目执行相同的操作。如果您更改了JSON对象,如:
return Json( new { success = bool, RedirectUrl = value } );
然后您可以将客户端功能更改为:
function (data) {
if(data.success === true) {
window.location = data.RedirectUrl;
} else {
alert('Unique variable name could not be created');
}
}
我知道它没有直接解决JavaScriptResult
的问题,但它应该得到代码的预期结果。
答案 2 :(得分:0)
您的问题可能源于您的客户端JavaScript。 ajax中的.post()方法实际上是:
的快捷方式$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType
});
所以你的客户端代码告诉jQuery将结果解释为json对象(即使你发回了一个脚本)。
$.post(
"/BvIndex/Copy/", // url
{ bvVariableid: bvId }, // data
function (data) {
window.location = data.RedirectUrl; // success
},
"json" // dataType
);
我会将您的代码更改为:
public ActionResult Copy( int bvVariableid ) {
var iReturn = _bvRepository.CopyBenefitVariable( bvVariableid, CurrentHealthPlanId, CurrentControlPlanId, _bvRepository.GetSecInfo( ).UserId, IsNascoUser());
if (iReturn == -999)
return new Json(new { type = "msg", data = "Unique variable name could not be created" });
if( iReturn != -1 )
return Json( new { type = "url", data = string.Format( "/BvIndex/Index/{0}?bvIndex-mode=select", iReturn ) } );
return RedirectToRoute( "Error" );
}
您的视图代码应如下所示:
CopyBenefitVariable = function (bvId, bvName) {
if (confirm('Are you sure you want to copy from the Benefit Variable ' + bvName + ' ?')) {
$.post(
"/BvIndex/Copy/",
{ bvVariableid: bvId },
function (data) {
if (data.type == "url") {
window.location = data.RedirectUrl;
} else if (data.type == "msg") {
alert(data.data);
}
}, "json");
}
};