Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 如何在mvc3中上传文件而不重新加载整个页面?_Asp.net Mvc 3_File Upload - Fatal编程技术网

Asp.net mvc 3 如何在mvc3中上传文件而不重新加载整个页面?

Asp.net mvc 3 如何在mvc3中上传文件而不重新加载整个页面?,asp.net-mvc-3,file-upload,Asp.net Mvc 3,File Upload,过去几天我一直在MVC工作 我的一个页面中有一个问题,即我有一个页面,q用户在其中输入所需的详细信息并上传一个文件。我有两个按钮,分别是上传文件和创建新档案 我的问题 我的问题是,当用户点击上传按钮时,我不想重新加载整个页面。我正在考虑使用webmethod进行文件上传 我不知道我到底做错了什么 有人能纠正我吗 这是我在名为Create的控制器中的Webmethod 控制器 [WebMethod] public string FileUpload(HttpPostedFileBas

过去几天我一直在MVC工作

我的一个页面中有一个问题,即我有一个页面,q用户在其中输入所需的详细信息并上传一个文件。我有两个按钮,分别是上传文件和创建新档案

我的问题

我的问题是,当用户点击上传按钮时,我不想重新加载整个页面。我正在考虑使用webmethod进行文件上传

我不知道我到底做错了什么

有人能纠正我吗

这是我在名为Create的控制器中的Webmethod

控制器

   [WebMethod]
   public string  FileUpload(HttpPostedFileBase file, BugModel model)
   {             
       BugModel bug = null;
       if (file != null && file.ContentLength > 0)
       {
           string path = "/Content/UploadedFiles/" + Path.GetFileName(file.FileName);
           string savedFileName = Path.Combine(System.Web.HttpContext.Current.Server.MapPath ("~" +path));
           file.SaveAs(savedFileName);
           BugAttachment attachment = new BugAttachment();
           attachment.FileName = "~" + path.ToString();
           bug.ListFile.Add(attachment);
           model = bug;              
       }
       return "FileUploaded";          
   }
使用脚本调用该方法

Javascript

       <script type="text/javascript">
      function UploadFile() {       
        $.ajax({
            type:"Post",
            url: "LogABug/FileUpload",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                alert("File Uploaded")
            },
            error: function () {
                ErrorMessage("Try Again");
            }
        });
    }
 </script>

函数UploadFile(){
$.ajax({
类型:“Post”,
url:“LogABug/FileUpload”,
数据:“{}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(msg){
警报(“文件上载”)
},
错误:函数(){
ErrorMessage(“重试”);
}
});
}

有人能告诉我怎么做吗?如果这是错误的方法,请纠正我正确的想法,请

您单独上传文件。因此,您需要两个操作:

  • 模型的公共字符串某物(BugModel模型)
  • 公共字符串文件上载(HttpPostedFileBase文件)
    用于该文件
现在,我将使用ajax提交。以下是一个例子:

<script type="text/javascript">
    $(function () {
        $("#file-upload-form").submit(function () {
            $(this).ajaxSubmit({
                target: "#message",
                cache: false
            });

            return false;
        });
    });
</script>
@using(Html.BeginForm("FileUpload", "LogABug", FormMethod.Post, new { enctype = "multipart/form-data", id = "file-upload-form" })) {
    @Html.ValidationSummary(true)
    <fieldset>
        @Html.EditorFor(model => model.File)
        <input type="submit" value="Upload" />
    </fieldset>
}
<div id="message">
</div>

$(函数(){
$(“#文件上载表单”).submit(函数(){
$(此).ajaxSubmit({
目标:“#消息”,
缓存:false
});
返回false;
});
});
@使用(Html.BeginForm(“FileUpload”,“LogABug”,FormMethod.Post,new{enctype=“multipart/formdata”,id=“file upload form”})){
@Html.ValidationSummary(true)
@EditorFor(model=>model.File)
}

您从操作中返回的内容将显示在id为的
div
消息中

您也可以不使用WebMethod执行此操作。你解决问题了吗?