C# 如何从输入类型“中获取文件名”;文件";在ASP.NETMVC项目中?

C# 如何从输入类型“中获取文件名”;文件";在ASP.NETMVC项目中?,c#,asp.net-mvc,entity-framework,razor,dbcontext,C#,Asp.net Mvc,Entity Framework,Razor,Dbcontext,我是ASP.NET新手,如果有人能帮助我,我将不胜感激。 我有我的文件输入: <form action="NewProject.cshtml" method="post" enctype="multipart/form-data"> <fieldset> <legend> Upload Image </legend> <label for="Image">Image</label> <input type=

我是ASP.NET新手,如果有人能帮助我,我将不胜感激。 我有我的文件输入:

<form action="NewProject.cshtml" method="post" enctype="multipart/form-data">
<fieldset>
  <legend> Upload Image </legend>
  <label for="Image">Image</label>
  <input type="file" name="Image" id ="filename"/>
  <br/>
  <input type="submit" value="Upload" id="Add" />
</fieldset>
现在我需要从那里获取图像的路径,并将其与我的模型相关联,该模型具有属性
公共字符串image{get;set;}
。我想通过
DBContext
在数据库中存储此文件路径

  context.Projects.Add(new Project()
            {

                Image = model.Image

            });
            context.SaveChanges();
但是这给了我空值,我的数据库表中没有
项目的内容。
我做错了什么?

提前谢谢

通过字符串的值在模型中创建一个新属性,并将其称为FileName。现在在视图中,创建一个同名的隐藏文件

<input type="hidden" id="FileName" value="" />

将更改句柄添加到文件输入

<input type="file" onchange="document.getElementById('FileName').value = this.value;" />

这将在每次更改隐藏文件时使用文件名的值更新该文件。当您执行回发时,模型绑定器将执行其余操作,并且您将在model.FileName中拥有文件名


希望这有帮助

您认为这是业务逻辑吗?不要那样做。一个很好的起点是。然后看一看,前两段代码在视图中,第三段代码在控制器的操作中。谢谢你的链接!正如jrummell所指出的,尽量使视图与业务逻辑保持中立。尝试创建视图模型和服务层,并将业务逻辑委托给服务层。在您的情况下,理想情况下您还应该有一个数据访问层。一个设计良好的解决方案肯定会从长远来看得到回报——干杯
<input type="file" onchange="document.getElementById('FileName').value = this.value;" />