2013-05-13 2 views
1

У нас очень простая форма с вводом файла. Когда мы публикуем форму, мы можем обрабатывать другой элемент из модели. Но вход файла всегда возвращает значение null. Кстати, мы используем наш взгляд и контроллер в Telerik Sitefinity в качестве настраиваемого элемента управления. Это может быть связано с этим, потому что мы не смогли найти решения.Вход файла с HttpPostedFileBase возвращает всегда null

Вот вид кода

@using (Html.BeginForm("Index", null, FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
@Html.ValidationSummary(true) 
<div class="form"> 
    <dl> 
     <dd> 
      @Html.LabelFor(model => model.ShareRecipe.Name) 
      @Html.EditorFor(model => model.ShareRecipe.Name) 
     </dd> 
     <dd> 
      @Html.LabelFor(model => model.ShareRecipe.EmailAddress) 
      @Html.EditorFor(model => model.ShareRecipe.EmailAddress) 
     </dd> 
     <dd> 
      @Html.LabelFor(model => model.ShareRecipe.RecipeArea) 
      @Html.EditorFor(model => model.ShareRecipe.RecipeArea) 
     </dd> 
     <dd> 
      <input type="file" name="fileUpload" id="fileUpload" /> 
     </dd> 
     <dd class="last"> 
      <input type="submit" class="btn btn-danger" onclick="return ValidateForm();" value="Send" /></dd> 
    </dl> 
</div> 
} 

Вот наша сторона контроллера.

 [HttpPost] 
     public ActionResult Index(ShareRecipeModel model, HttpPostedFileBase fileUpload, FormCollection values) 
     { 
       if (fileUpload != null && fileUpload.ContentLength > 0) 
       { 
        var fileName = Path.GetFileName(fileUpload.FileName); 
        var path = Path.Combine(Server.MapPath("~/img/"), fileName); 
        fileUpload.SaveAs(path); 
        model.ImageUrl = fileName; 
       } 
} 

Мы также рекомендуем публиковать сообщения с помощью основного тега формы. :

<form method="post" enctype="multipart/form-data"></form> 

не работает. Также в Html.BeginForm мы попробовали весь индекс вариации и имя контроллера, как:

null,null 
"Index","ShareRecipeController" 

т.д.

В конце я хотел бы дать информацию об использовании таможенного контроля в Telerik Sitefinity мы имеем эту линию на нашем контроллере:

[ControllerToolboxItem(Name = "ShareRecipe", Title = "Share Your Recipe", SectionName = "MvcWidgets")] 
public class ShareRecipeController : BaseController 

Это может быть большим для нас, если кто-нибудь есть какие-либо идеи, спасибо заранее, Serhad.

ответ

2

В нашем теге формы у нас есть необходимый элемент, который является «FormMethod.Post, new {enctype =" multipart/form-data "}", но из-за структуры sitefinity, когда мы используем наш пользовательский элемент управления как пользовательский элемент управления на странице , Это связано с главной страницей этой страницы. Тег формы на главной странице влияет на наш тег формы в пользовательском контроле.

Чтобы избежать этой проблемы, добавьте «метод =» пост»ENCTYPE =„многочастному/form-данные“свойства в вашей главной странице тега, а не добавлять вид пользовательского управления

исх:. http://www.sitefinity.com/developer-network/forums/bugs-issues-/upload-file-with-mvc

Смежные вопросы