C# 如何在ASP.NET MVC中上载文件
我已经在我的项目MVC asp net c中实现了一个上传文件的表单# 上传文件不是强制性的 我的问题是: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 () {
<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代码。以及打开浏览器的开发工具时在控制台中看到的内容。