2013-08-28 63 views
-1

我有一个表单,它是通过脚本在jquery插件中创建的。在MVC中上传文件

elem.insertHtml('<form method="post" action="Home/ContactUs" enctype="mutlipart/form-data"><input type="file" name="file" id="fileUpload"></form></div>') 

我必须上传一个文件,并将其保存在某个文件夹中。当我选择一个文件并提交表单时,在表单子集调用联系人操作。有来自主控制器的联系人操作。

public ActionResult ContactUs(HttpPostedFileBase file, ContactFormModel model) 
{ 
    //other code 
} 

但HttpPostedFileBase文件为空,我没有任何理念为什么。你能帮我吗?

当我使用Html.BeginForm创建表单时,它可以正常工作,但是脚本存在问题。

+2

它可能是因为'enctype =“mutlipart/form-data”'中的拼写错误吗? – Anton

+0

检查我批准的答案http://stackoverflow.com/questions/18440220/how-to-upload-file-in-strong-type-view-in-asp-net-mvc/18441187#18441187 –

+0

没有enctype我会有验证错误。 –

回答

0

这样从创建HTML表单:

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    <input type="text" name="Subject"/> 
    <input type="file" name="file" /> 
    <input type="submit" value="OK" /> 
} 

另外,还要确保在你的控制器,该方法具有这样的属性[HttpPost]

[HttpPost] 
public ActionResult ContactUs(HttpPostedFileBase file, ContactFormModel model) 
{ 
    //other code 
} 
+1

但是我的表单由脚本创建。我无法在.cshtml视图文件中创建它。 –

+0

你有'HttpPost'属性吗?更新了我的答案。 @ dotNet_d19 –

0

你能不能改变从

elem.insertHtml('<form method="post" action="Home/ContactUs" enctype="mutlipart/form-data"><input type="file" name="file" id="fileUpload"></form></div>') 

elem.insertHtml('<form method="post" action="Home/ContactUs" enctype="multipart/form-data"><input type="file" name="file" id="fileUpload"></form></div>') 

你能检查Request.Files.Count如果不是你可以发表评论,我请

public ActionResult ContactUs(ContactFormModel model) 
{ 
    Request.Files[0].SaveAs(Server.MapPath(@"~\files\test.jpg")); 
    return View(); 
} 
它必须大于0