Ввод файла с помощью HttpPostedFileBase всегда возвращает ноль

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

Вот вид кода

@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

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

1 ответ

Решение

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

Чтобы избежать этой проблемы, добавьте свойства "method="post" enctype="multipart/form-data"в тег главной страницы вместо добавления настраиваемого представления управления.

ссылка: http://www.sitefinity.com/developer-network/forums/bugs-issues-/upload-file-with-mvc

Другие вопросы по тегам