2016-03-04 56 views
0

我正在從MVC 5將項目升級到MVC 6,並且發現FormCollection沒有被填充(即返回null值)一個AJAX帖子。ASP.NET MVC 6 FormCollection沒有在AJAX post中填充

數據正在向下發送正確的線:

Form post data

在控制器中的方法的簽名是:

public string processform(FormCollection formCollection) 

我可以以這種方法,該方法是設置一個斷點當表單數據被提交時命中,但formCollection對象爲空。

鑑於此代碼在較低版本的MVC中工作得很好,我們是否必須在MVC 6中做一些不同的事情才能實現它?

回答

1

this問題:

  1. 要:

    的FormCollection作爲參數不被MVC 6支持(還)

    您可以使用以下兩種方法做到這一點根據此讀取異步值article

  2. 創建您自己的模型綁定器參見here
+0

你給我的建議讓我得到更好的整體答案,所以謝謝你。 – CrispinH

0

扎基的帖子我走上一條路徑,我結束了這段代碼的工作原理:

[ValidateAntiForgeryToken] 
    [HttpPost] 
    [AllowAnonymous] 
    public async Task<string> processform() 
     { 
     var objFormCollection = await HttpContext.Request.ReadFormAsync(); 
     ... 
     } 

雖然與ASP.NET 5版/酷睿1.0 MVC 6等的快速變化的步伐,事情可能會改變。

0

我通過使用HttpContext閱讀表單數據和任何附加到正在提交的表單的文件。 例:

[HttpPost] 
    public void EditProperty() 
    { 
     var isFeatured = HttpContext.Request.Form["isFeatured"]; 
     var files = HttpContext.Request.Form.Files; 
     foreach (var file in files) 
     { 
      if (file.Length > 0) 
      { 
       System.Console.WriteLine(file.FileName); 
       System.Console.WriteLine("This file is featured:" + isFeatured.ToString()); 
      } 
     } 
    } 

在上述「isFeatured」的例子是,我使用jquery加入FORMDATA一個鍵。我希望這對你有一些幫助。

0

確保您的輸入字段具有「名稱」屬性。