asp.net MVC3.0中的fileUpload

时间:2012-03-14 07:51:43

标签: asp.net-mvc-3 file-upload

我想在我的MVC视图中使用fileUpload,这是一个.aspx页面。 我想在Controller中获取一个对象的路径。

<% using (Html.BeginForm("AddClient","Client",FormMethod.Post,new {enctype ="multipart/form-data" }))
   { %>
<div class="float-left">
<%: Html.Label("BAAFile Path") %>
<br />
<input type="file" name="file" id="file" />
<%: Html.ValidationMessageFor(model => model.BAAFilePath) %>--%>
</div>
<% } %>

在页面底部有一个保存详细信息的按钮(fileupload控件旁边没有按钮)。

现在我想将fileupload控制的路径提取到我的控制器中。

    [HttpPost]
    [ButtonName(Name = "Save")]
    public ActionResult AddClient(ClientService.ClientDto client,HttpPostedFileBase file)
    {
        if (file != null && file.ContentLength > 0)
            {
                // extract only the fielname
                var fileName = Path.GetFileName(file.FileName);

            }
    }

现在我想获取文件路径

     var fileName = Path.GetFileName(file.FileName);

成为“ClientService.ClientDto”的对象,即“client”。

     client.BAAFilePath=fileName 

但我将空数据转换为“var fileName”。

iam在“ActionResult AddClient(ClientService.ClientDto client)”中使用以下代码

if (file != null && file.ContentLength > 0) 
    {
        // extract only the fielname
        var fileName = Path.GetFileName(file.FileName);

    }
我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

我建议将表单绑定到视图模型,然后将视图模型绑定到DTO。 您的视图模型应该具有类型为HttppostedFileBase的属性“File”,然后您可以在发布表单时正确绑定所有内容。 确保您的表单具有enctype =“multipart / form-data”