2011-11-09 55 views
0

我遇到了以下问题: 我有这个模型ASP MVC上传助手扩展问题

public class Region 
{ 
    public int RegionID { get; set; } 
    public string RegionName { get; set; } 
    public HttpPostedFile CustomFile { get; set; } 
} 

和我有here自定义扩展HTML辅助方法。

在我有以下代码视图

现在:

<%using (Html.BeginForm("ModifyRegion", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 

{%>

<%: Html.TextAreaFor(x => x.RegionID, Model.RegionID)%> 
    <br /> 
    <%: Html.TextAreaFor(x => x.RegionName, Model.RegionName)%> 
    <br /> 

<%: Html.FileBoxFor(x=>x.CustomFile, Model.CustomFile) %> 

<input type="submit" /> 

当它到达我的控制器行动CustomFile字段为空,但所有其他字段正确设置。如果我将CustomFile属性更改为字符串而不是HttpPostedFile,则会正确获取文件名(例如,“dog.jpg”)。有什么方法可以正确获取完整的HttpPostedFile文件吗?

由于提前, Tamash

回答

1

尝试更换HttpPostedFile通过HttpPostedFileBase在您的查看模型中:

public class Region 
{ 
    public int RegionID { get; set; } 
    public string RegionName { get; set; } 
    public HttpPostedFileBase CustomFile { get; set; } 
} 

还要确保自定义您正在使用帮手生成正确的名称和相应的文件字段的类型:

<input name="CustomFile" type="file" /> 
+0

试过了。 CustomFile属性仍然为空。生成的HTML为:



<输入名称= “CustomFile” 类型= “文件” 值= “浏览”/>

+0

@TamasIonut,好像你有2个嵌套表单,这是无效的HTML。你将不得不删除外部表格,只留下具有'enctype =“multipart/form-data”'属性的表单。 –

+0

非常感谢。我有一个局部视图,它自己声明了一个表单,并将其嵌入到我的视图中,转换为另一种形式(不知道太多关于HTML我猜;))) –

0

您可以使用类似:

<输入名称= “CustomFile” 类型= “文件” VALUE = “浏览”/>

+0

我已经做到了,但该模型的CustomFile仍然是空。 –