HttpPostedFileBase总是返回null

问题描述:

我不知道为什么我的InvoicePDF总是空。HttpPostedFileBase总是返回null

型号:

public class CreateEventViewModel 
{ 
    // [FileExtensions(Extensions = "pdf", ErrorMessage = "Akceptuję tylko pliki PDF")] 
    public HttpPostedFileBase InvoicePDF { get; set; } 
    ... 
} 

我还添加了在web.config中maxRequestLength="65536"并没有帮助。

<form id="f"> 
    @using (Html.BeginForm("Create", "Event", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 
     @Html.AntiForgeryToken() 
     <div> 
      @Html.TextBoxFor(model => model.InvoicePDF, new { type = "file" }) 
      @*@Html.ValidationMessageFor(model => model.InvoicePDF)*@ 
     </div> 
     ... 
     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <button type="button" class="btn btn-default" onclick="CountPrice()">Oblicz cenę</button> 
        <input type="submit" value="Zapisz" class="btn btn-default" /> 
        <button type="button" id="cancel" class="btn btn-default">Wyjdź</button> 
       </div> 
      </div> 
     </div> 
    } 
</form> 

控制器动作:

[HttpPost] 
public async Task<ActionResult> Create(CreateEventViewModel ev) 
{ 
    ... 
} 

我在方法开始时设置断点,ev.InvoicePDF总是空。 问题在哪里?

+0

你可以显示你的创建操作? – Usman

+0

当然,但现在我什么都不做与文件,只需要在开始断点和检查发布模式,所以没有什么应该怎样帮助。 [创建行动(https://pastebin.com/WCScM7Pn) – Cezar

+1

您可以删除

,因为已经有一个表单 – Usman

删除您的表单标签。做一个查看来源。这将工作:

@model Testy20161006.Controllers.CreateEventViewModel 
@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Index53</title> 
</head> 
<body> 
    <div> 
     @* remove this <form id="f">*@ 
      @using (Html.BeginForm("Create", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
      { 
       @Html.AntiForgeryToken() 
       <div> 
        @Html.TextBoxFor(model => model.InvoicePDF, new { type = "file" }) 
        @*@Html.ValidationMessageFor(model => model.InvoicePDF)*@ 
       </div> 

       <div class="form-group"> 
        <div class="col-md-offset-2 col-md-10"> 
         <button type="button" class="btn btn-default" onclick="CountPrice()">Oblicz cenę</button> 
         <input type="submit" value="Zapisz" class="btn btn-default" /> 
         <button type="button" id="cancel" class="btn btn-default">Wyjdź</button> 
        </div> 
       </div> 
      } 
     @*</form>*@ 
    </div> 
</body> 
</html> 

public class HomeController : Controller 
{ 
    [HttpPost] 
    public async Task<ActionResult> Create(CreateEventViewModel ev) 
    { 
     return View(); 
    } 

    public ActionResult Index53() 
    { 
     CreateEventViewModel createEventViewModel = new CreateEventViewModel(); 
     return View(createEventViewModel); 
    } 
+0

我已经改变了形式为''和工作完美。 – Cezar