首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net mvc3里怎么弹出javascript对话框

2013-08-25 
asp.net mvc3里如何弹出javascript对话框?/// summary/// 从web服务器上下载文件/// /summary/// ret

asp.net mvc3里如何弹出javascript对话框?


/// <summary>
        /// 从web服务器上下载文件
        /// </summary>
        /// <returns></returns>
        public ActionResult DownFromDisk(string dataId)  
        {
            try
            {
                if (dataId!="")
                {
                    //这里有一些下载的代码
                    return new EmptyResult(); 
                }
                else
                {
                    return Content("<script>alert('未找到文件ID!');</script>");
                }
            }
            catch 
            {
                return JavaScript("alert('数据下载时发生异常!');");
            }
        }


如上代码,点击列表中的一个链接执行 DownFromDisk?dataId=xxx,从服务器上下载文件,如下载出现错误js提示错误,使用:
return Content("<script>alert('未找到文件ID!');</script>");
可以弹出提示,
使用:
return JavaScript("alert('数据下载时发生异常!');");
总是出现下载文件...

我不想用content返回actionResult,因为用content背景会出现空白,而且页面无法返回。


[解决办法]
使用JavaScriptResult,貌似只能在Ajax调用的时候使用,然后在页面上使用eval()来执行。
如果你是在A页面上的一个link,指向某一个Action,然后点击这个link就会下载文件。因为你不想在点击链接后刷新页面,当然你可以使用ajax和JavascriptResult, 也可以不使用ajax,使用JasonResult

public ActionResult DoSomething(){

return Json(new {isok=true, message="Your Message", data=...});

//True / False Json Return
//return UserObj == null ?
//Json(true, JsonRequestBehavior.AllowGet) :
//Json(string.Format("YourObject '{0}' to String", YourObject),
//JsonRequestBehavior.AllowGet);

}

//view
$.ajax
{

//code
success :function(returnvalue)
{

if(!returnvalue.isok)
{
window.alert("Error:" + returnvalue.message);
}
else
{
//do the stuff with returnvalue.data
}

}

[解决办法]
首先,楼主你要明白每个controler返回的都是ActionView、无论Content函数还是JavaScript函数,返回的都是内容 ,只不过返回形式不一样,ContentType不一样而已,JavaScript返回ContentType:"text/javascript",解析器肯定就当文件处理了,直接下载了。Content只返回了一段Js,ContentType:"text/html",肯定解析了<script>alert('未找到文件ID!');</script>。
建议要么用Ajax调用,要么在返回View的时候 添加一个,ViewData:
ViewData["Tips"] = "<script>alert('未找到文件ID!');</script>";

然后到视图输出就行了。。@ViewData["Tips"]
[解决办法]
总感觉在后台写js这种方式并不好,应该通过异步给前端返回值,让前台弹框。。。
[解决办法]
两种方法
1:
 var script = String.Format("<script>alert('修改成功!');location.href='{0}'</script>", Url.Action("Index"));

            return Content(script, "text/html");

2:
return Content("<script>alert('添加失败!');</script>");

热点排行