有一个按钮,单击后出现一个对话框的网页:
- 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