ASP.NET MVC2,我可以将模型字段用作html id吗?

时间:2011-04-01 16:40:03

标签: asp.net-mvc file-upload

我是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");
    }

3 个答案:

答案 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");
    }