我有一个接受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();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么这样做?有什么我对Bind属性有误解吗?
绑定包括简单地说它是否找到该属性的名称 - 然后绑定它,否则将其排除.由于它在您的情况下丢失,因此预期为空.想想我的模型是"客户"的情况,我只希望ModelBinder绑定到CustomerId和EmailAddress,并排除任何其他属性.在这种情况下,我会指定Bind [Include ="CustomerId,EmailAddress"]但是 - 如果缺少EmailAddress,那么它仍然是null