2011-04-22 61 views
0

我有一个接受HttpPostedFileBase的动作,但发布此文件的表单可能会命名输入“File”或“FileToUpload”。由于我无法更改发布表单的文件输入名称,因此我将Bind属性的Include属性设置为我将接受的名称列表。在HttpPostedFileBase中使用Bind的Include属性

但是,当文件输入名为“File”的表单发布到此操作时,则FileToUpload参数为空。见下文。

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult UploadFile([Bind(Include = "File,FileToUpload")] 
     HttpPostedFileBase FileToUpload) 
    { 
     // If the file was posted with the name "File", then FileToUpload is null 
     return View(); 
    } 

任何人都可以解释为什么这是表现这样吗?有什么我误解了绑定属性?

回答

6

绑定包含只是说如果它找到该属性的名称 - 然后绑定它,否则排除它。由于在你的案件中失踪,它预计将是空的。考虑一下我的模型是“客户”的场景,我只希望ModelBinder绑定到CustomerId和EmailAddress,并排除任何其他属性。在这种情况下,我会指定绑定[Include =“CustomerId,EmailAddress”] 但是 - 如果EmailAddress丢失,那么它仍然是空的

相关问题