2016-03-24 4 views
1

я следующие Ajax.BeginForm на ViewPageAjax.BeginForm отправить параметры контроллер

using (Ajax.BeginForm("Financing_Product_Feature_Upload", "FileUpload", new { productid = @ViewBag.Product_ID }, new AjaxOptions() { HttpMethod = "POST" }, new { enctype = "multipart/form-data"})) 
{ 
    @Html.AntiForgeryToken() 
    <input type="file" name="files"> <input type="submit" value="Upload File to Server"> 
} 

тогда я следующий метод контроллера в классе FileUpload контроллера

[HttpPost] 
public ActionResult Financing_Product_Feature_Upload(HttpPostedFileBase file, string productid) 
{ 

но когда я нажимаю кнопку выше ее не предписывающий подавать до Financing_Product_Feature_Upload Метод управления

+3

попытался переименовать файл параметра HttpPostedFileBase в файлы HttpPostedFileBase? таким образом, он совпадает с именем входного тега –

+0

Боковое примечание: вы не можете загружать файлы с помощью 'Ajax.BeginForm()', поэтому ваш контроллер никогда не получит никаких файлов, даже если вы исправите опечатки. –

ответ

0

попробуйте добавить @ в enctype

using (Ajax.BeginForm("Financing_Product_Feature_Upload", "FileUpload", new { productid = @ViewBag.Product_ID }, new AjaxOptions() { HttpMethod = "POST" }, new { @enctype = "multipart/form-data"})) 
         { 
          @Html.AntiForgeryToken() 
          <input type="file" name="file"> <input type="submit" value="Upload File to Server"> 
         } 
0

Добавить @ перед использованием:

@using (Ajax.BeginForm("Financing_Product_Feature_Upload", "FileUpload", new { productid = ViewBag.Product_ID }, new AjaxOptions() { HttpMethod = "POST" }, new { enctype = "multipart/form-data"})) 
         { 
          @Html.AntiForgeryToken() 
          <input type="file" name="files"> <input type="submit" value="Upload File to Server"> 
         } 

И переименовать HttpPostedFileBase file к files, потому что это ваше имя входного файла.

+0

как только я добавил @ перед использованием «Неожиданный», используя «ключевое слово после символа« @ ». Внутри кода вам не нужны префиксные конструкции, такие как «использование» с «@». ' – kez

+0

@kez у вас есть это, используя внутри другого блока кода, и там вы используете @. Пример: '@if (cond) {using (ваш) ....' и это причина вашего исключения, а затем вам не нужно @ перед использованием. – TotPeRo

1

Сериализация MVC работает с атрибутами имени. Имя элемента управления формой должно соответствовать параметрам действия контроллера MVC. В вашем случае, я думаю, вы должны получить сообщение об ошибке в консоли браузера, когда вы нажмете кнопку «Отправить», в которой говорится: «Нет никакого соответствующего действия, обнаруженного в файле Contoller FileUpload» или что-то, что дает это значение.

@using (Ajax.BeginForm("Financing_Product_Feature_Upload", "FileUpload", new { productid = @ViewBag.Product_ID }, new AjaxOptions() { HttpMethod = "POST" }, new { enctype = "multipart/form-data" })) 
{ 
    @Html.AntiForgeryToken() 
    <input type="file" name="files"> <input type="submit" value="Upload File to Server"> 
} 

public class FileUploadController : Controller 
{ 
    [HttpPost] 
    public ActionResult Financing_Product_Feature_Upload(HttpPostedFileBase files, string productid) 
    { 
     // Action code goes here 
    } 
} 
Смежные вопросы