我是ASP.NET和HTML的新手。 我想上传一个文件,所以我有一个带有HttpPostedFileBase字段的模型,以及一个强类型视图,它获取模型以获取文件的值。
我的问题是,如何向控制器发送文件的值?
这是我的html代码,我想将File的值发送到Model.File,但放置<%:Model.File:>而不是file1不起作用:(
<label for="file1">File: </label>
<input type="file" name="file1" id="file1" size="40">
P.S。:我也尝试过使用asp:FileUpload,但我不知道如何将结果发送到控制器。
编辑:
好的,我去发布我的代码,非常感谢ZeNo。 这是模型:
public class AddProductModel
{
[...]
public HttpPostedFileBase File { get; set; }
}
这是我的观点:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Application.Models.AddProductModel>" %>
<form id="form1" runat="server">
<% using (Html.BeginForm()) { %>
<% Html.EnableClientValidation(); %>
<fieldset>
[...]
<div>
<label for="file1">File: </label>
<input type="file" name="file1" id="<%: Model.File %>" size="40">
<br />
</div>
<br />
<p>
<input type="submit" value="Add!" />
</p>
</fieldset>
<% } %>
</form>
这是我的控制器,我在这里使用调试器,它说model.File是空的:
[HttpPost]
public ActionResult AddProduct(AddProductModel model)
{
if (model.ProductName != null && model.ProductDescription != null)
objRepository.addToProducts(model);
return RedirectToAction("/AddProduct");
}
答案 0 :(得分:0)
改为使用<%:Model.File %>
。
答案 1 :(得分:0)
将文件控件放在表单标记
中<form action="/Home/GetFile" id="myform">
<input type="file1" id="file1"/>
</form>
<script type="text/javascript" language="javascript">
var form = $("#myform");
form .submit();
</script>
控制器:
[HttpPost]
public ActionResult GetFile(HttpPostedFileBase file) {
if (file.ContentLength > 0) {
var fileName = Path.GetFileName(file.FileName);
}
}
答案 2 :(得分:0)
将您的观点更改为:
<form action ="/AddProduct" id="myform">
<% Html.EnableClientValidation(); %>
<fieldset>
<div>
<label for="file1">File: </label>
<input type="file" name="file1" id="<%: Model.File %>" size="40">
<br />
</div>
<br />
<p>
<input type="submit" value="Add!" />
</p>
</fieldset>
</form>
注意我已经删除了表单runat =“server”..还有嵌套表单..
添加此Javascript代码段:
<script type="text/javascript" language="javascript">
var form = $("#myform");
form .submit();
</script>
控制器中的进行以下更改:
[HttpPost]
public ActionResult AddProduct(HttpPostedFileBase file)
{
if (file.ContentLength > 0) {
var fileName = Path.GetFileName(file.FileName);
}
return RedirectToAction("/AddProduct");
}