我有一个接受HttpPostedFileBase的动作,但是发布此文件的表单可能将输入命名为“File”或“FileToUpload”。由于我无法更改发布表单的文件输入名称,因此我将Bind属性的Include属性设置为我将接受的名称列表。
但是,当名为“File”的文件输入的表单发布到此操作时,FileToUpload参数为null。见下文。
[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();
}
有谁可以解释为什么这样做?有什么我对Bind属性有误解吗?
答案 0 :(得分:6)
绑定包括简单地说如果找到该属性的名称 - 然后绑定它,否则将其排除。由于它在您的情况下丢失,因此预期为空。想想我的模型是“客户”的情况,我只希望ModelBinder绑定到CustomerId和EmailAddress,并排除任何其他属性。在这种情况下,我会指定Bind [Include =“CustomerId,EmailAddress”] 但是 - 如果缺少EmailAddress,那么它仍然是null