日期:2014-05-17  浏览次数:20481 次

.net MVC3(Razor)问题
有一个按钮,单击后出现一个对话框的网页:
HTML code

@{
    Layout = null;
}

<script type="text/javascript" src="../../Scripts/jquery-1.4.4.min.js"></script>
<script type="text/javascript">
    function uploadImage() {
        if ($("#uploadIMG").val().length < 1) {
            alert("Choisir une image.");
            return false;
        } else {
            $("#formtest").submit();
        }
    }

 
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Upload</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" id="formtest" action="uploadIMG/Upload">
  <text>Choisir une image:</text><input type="file" name="fileIMG" id="uploadIMG" /><br />
  <input type="button" id="btntest" value="Upload" onclick="uploadImage()"/>  
</form>
<img src="/Image/@ViewBag.FileName" />

</body>
</html>



里面有一个form, 一个文件选择器一个按钮,应该从代码中开出来了,当点击这里的按钮相当于一个submit的操作,可以看下javascrip的函数,点击这个按钮后执行后台controller:
C# code

public class UploadIMGController : Controller
    {
        //
        // GET: /UploadIMG/


        public void Upload()
        {
            HttpPostedFileBase file = Request.Files["fileIMG"];
            string nomstr=System.Guid.NewGuid().ToString().Substring(0, 6);
            if (file.ContentLength > 0)
            {
                file.SaveAs(Server.MapPath("~/Image/") + nomstr + System.IO.Path.GetExtension(file.FileName));
            }
            //ViewBag.FileName = System.IO.Path.GetFileName(file.FileName);
            ViewBag.FileName = nomstr + System.IO.Path.GetExtension(file.FileName);
        }

    }


可以看到这个控制器执行的是保存上传文件的一个操作,执行这个控制器的时候也会弹出一个新的空白网页,即使我没有给他加view. 而我想要的是执行这段上传文件操作后,不弹出空白网页,并且把上传的文件的地址传递出来,最后的结果就是:在之前描述的那个html对话框中,当点击上传,还是在这同一个对话框,里面出现一个上传图片的缩略图,图下面跟着这个图片的地址.


不知道我的描述准确不, 大家有什么好的建议,或者办法帮帮我吧,谢谢了。

------解决方案--------------------
页面加一个隐藏的iframe,把上面的那个form的target设为那个隐藏的iframe的name