C# 如何在ASP.NET MVC中上载文件

C# 如何在ASP.NET MVC中上载文件,c#,asp.net-mvc,file-upload,C#,Asp.net Mvc,File Upload,我已经在我的项目MVC asp net c中实现了一个上传文件的表单# 上传文件不是强制性的 我的问题是: 当不上传文件时,我确认表单的值存储在数据库中 如果我上传文件,我不会确认表单的值是否存储在数据库中,尽管这些值已在数据库中注册 e、 g 我用表单打开视图 我填写表格数据时没有附加和上传任何文件 这些值在数据库中注册 我有一个警报弹出的回报 <script type="text/javascript"> $(function () {

我已经在我的项目MVC asp net c中实现了一个上传文件的表单#

上传文件不是强制性的

我的问题是:

  • 当不上传文件时,我确认表单的值存储在数据库中
  • 如果我上传文件,我不会确认表单的值是否存储在数据库中,尽管这些值已在数据库中注册
  • e、 g

    我用表单打开视图

    我填写表格数据时没有附加和上传任何文件

    这些值在数据库中注册

    我有一个警报弹出的回报

    <script type="text/javascript">
        $(function () {
            var msg = '@ViewData["result"]';
            console.log(msg);
              if (msg > 0)
              {
                  alert("Ok");
                  var url = "@Url.Action("Index", "Home")";
                  window.location.href = url;
              }
    });
    </script>
    
    <script type="text/javascript">
        $(function () {
            var msg = '@ViewData["result"]';
            console.log(msg);
              if (msg > 0)
              {
                  alert("Ok");
                  var url = "@Url.Action("Index", "Home")";
                  window.location.href = url;
              }
    });
    </script>
    
    
    $(函数(){
    var msg='@ViewData[“result”];
    控制台日志(msg);
    如果(消息>0)
    {
    警报(“正常”);
    var url=“@url.Action”(“索引”、“主页”);
    window.location.href=url;
    }
    });
    
    我用表单打开视图

    我填写表格数据附加和上传我的文件

    文件已上载

    这些值在数据库中注册

    我没有这个预警返回弹出窗口

    <script type="text/javascript">
        $(function () {
            var msg = '@ViewData["result"]';
            console.log(msg);
              if (msg > 0)
              {
                  alert("Ok");
                  var url = "@Url.Action("Index", "Home")";
                  window.location.href = url;
              }
    });
    </script>
    
    <script type="text/javascript">
        $(function () {
            var msg = '@ViewData["result"]';
            console.log(msg);
              if (msg > 0)
              {
                  alert("Ok");
                  var url = "@Url.Action("Index", "Home")";
                  window.location.href = url;
              }
    });
    </script>
    
    
    $(函数(){
    var msg='@ViewData[“result”];
    控制台日志(msg);
    如果(消息>0)
    {
    警报(“正常”);
    var url=“@url.Action”(“索引”、“主页”);
    window.location.href=url;
    }
    });
    
    如何解决这个问题

    查看

    <script type="text/javascript">
        $(function () {
            var msg = '@ViewData["result"]';
            console.log(msg);
              if (msg > 0)
              {
                  alert("Ok");
                  var url = "@Url.Action("Index", "Home")";
                  window.location.href = url;
              }
    });
    </script>
    
    
    $(函数(){
    var msg='@ViewData[“result”];
    控制台日志(msg);
    如果(消息>0)
    {
    警报(“正常”);
    var url=“@url.Action”(“索引”、“主页”);
    window.location.href=url;
    }
    });
    
    控制器

    [HttpPost]
    public ActionResult Index(PersonModel person, HttpPostedFileBase file)
    {
    
        if (file != null && file.ContentLength > 0)
        {
            var fileName = System.IO.Path.GetFileNameWithoutExtension(file.FileName);
            var fileExtension = System.IO.Path.GetExtension(file.FileName);
    
            if (fileExtension.ToString() == ".jpeg" ||
                        fileExtension.ToString() == ".jpg" ||
                        fileExtension.ToString() == ".gif" ||
                        fileExtension.ToString() == ".png")
            {
                fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + fileName.Trim() + fileExtension;
                var userfolderpath = System.IO.Path.Combine(Server.MapPath("~/UploadedFiles/"), fileName);
                file.SaveAs(userfolderpath);
    
                MTsqlinsert(person);
            }
            else
            {
                TempData["Message"] = "Please upload only image (jpg,gif,png)";
            }
        }
        else
        {
            MTsqlinsert(person);
        }
    
        if (ModelState.IsValid)
        {
            return View(person);
        }
    
        return View(person);
    }
    
    
       private void MTsqlinsert(PersonModel person)
        {
            try
            {
                string constr = ConfigurationManager.ConnectionStrings["cn"].ConnectionString;
    
                using (MySqlConnection con =
                    new MySqlConnection(constr))
                {
                    using (MySqlCommand command =
                        new MySqlCommand("SP", con))
                    {
                        command.Connection = con;
                        command.CommandType = CommandType.StoredProcedure;
                        con.Open();
                        ViewData["result"] = command.ExecuteNonQuery();
                        con.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                string message = string.Format("<b>Message:</b> {0}<br /><br />", ex.Message);
                message += string.Format("<b>StackTrace:</b> {0}<br /><br />", ex.StackTrace.Replace(Environment.NewLine, string.Empty));
                message += string.Format("<b>Source:</b> {0}<br /><br />", ex.Source.Replace(Environment.NewLine, string.Empty));
                message += string.Format("<b>TargetSite:</b> {0}", ex.TargetSite.ToString().Replace(Environment.NewLine, string.Empty));
                ModelState.AddModelError(string.Empty, message);
            }
        }
    
    [HttpPost]
    公共操作结果索引(PersonModel person,HttpPostedFileBase文件)
    {
    如果(file!=null&&file.ContentLength>0)
    {
    var fileName=System.IO.Path.GetFileNameWithoutExtension(file.fileName);
    var fileExtension=System.IO.Path.GetExtension(file.FileName);
    如果(fileExtension.ToString()=“.jpeg”||
    fileExtension.ToString()==“.jpg”||
    fileExtension.ToString()==“.gif”||
    fileExtension.ToString()==“.png”)
    {
    fileName=DateTime.Now.ToString(“yyyyMMddHHmmss”)+““+fileName.Trim()+文件扩展名;
    var userfolderpath=System.IO.Path.Combine(Server.MapPath(“~/UploadedFiles/”),文件名);
    SaveAs(userfolderpath);
    MTsqlinsert(人);
    }
    其他的
    {
    TempData[“Message”]=“请仅上载图像(jpg、gif、png)”;
    }
    }
    其他的
    {
    MTsqlinsert(人);
    }
    if(ModelState.IsValid)
    {
    返回视图(人);
    }
    返回视图(人);
    }
    私有void MTsqlinsert(PersonModel person)
    {
    尝试
    {
    string constr=ConfigurationManager.ConnectionString[“cn”].ConnectionString;
    使用(MySqlConnection-con)=
    新MySqlConnection(constr))
    {
    使用(MySqlCommand)命令=
    新的MySqlCommand(“SP”,con))
    {
    command.Connection=con;
    command.CommandType=CommandType.storedProcess;
    con.Open();
    ViewData[“result”]=command.ExecuteNonQuery();
    con.Close();
    }
    }
    }
    捕获(例外情况除外)
    {
    string message=string.Format(“message:{0}

    ”,例如message); message+=string.Format(“StackTrace:{0}

    ”,ex.StackTrace.Replace(Environment.NewLine,string.Empty)); message+=string.Format(“Source:{0}

    ”,ex.Source.Replace(Environment.NewLine,string.Empty)); message+=string.Format(“TargetSite:{0}”,ex.TargetSite.ToString().Replace(Environment.NewLine,string.Empty)); AddModelError(string.Empty,message); } }
    在这两种情况下,您在控制台中看到了什么?@DaveBarnett在这两种情况下都看到了。总是我需要显示弹出窗口,如果有上传文件或不是,但你的代码有控制台。日志(味精);在这两种情况下,控制台都记录了什么?@DaveBarnett如果您指的是vs2019调试,那么这些值都是正确的,我指的是您的JavaScript代码。以及打开浏览器的开发工具时在控制台中看到的内容。