使用Bind的Include属性和HttpPostedFileBase

JMP*_*JMP 0 asp.net-mvc-3

我有一个接受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属性有误解吗?

Ada*_*SFT 6

绑定包括简单地说它是否找到该属性的名称 - 然后绑定它,否则将其排除.由于它在您的情况下丢失,因此预期为空.想想我的模型是"客户"的情况,我只希望ModelBinder绑定到CustomerId和EmailAddress,并排除任何其他属性.在这种情况下,我会指定Bind [Include ="CustomerId,EmailAddress"]但是 - 如果缺少EmailAddress,那么它仍然是null