2017-03-31 62 views
0

我不知道如何恰當地說這個問題,但基本上我沒有一個ASP.Net應用程序。我發送以下請求到控制器從我的觀點:發送高級參數到ASP.Net MVC

http://localhost:59112/Contacts/IndexJson?current=1&rowCount=50&sort%5BLastName%5D=desc&searchPhrase=&_=1490960196673 

我寫了沒有工作100%兩個班作爲此請求數據的結構如下:

public class RequestData 
{ 
    public int current { get; set; } 
    public int rowCount { get; set; } 
    public string searchPhrase { get; set; } 
    public IEnumerable<SortData> sortItems { get; set; } 
} 
public class SortData 
{ 
    public string Field { get; set; } // FIeld Name 
    public string Type { get; set; } // ASC or DESC 
} 

然後我控制器我有以下幾點:

public JsonResult IndexJson(RequestData model) 
{ 
    /* Irrelevant code */ 
} 

樣板工程,並正確填寫以外的所有sortItems返回null。我如何獲得在我的課堂上定義的sortItemsFieldType

由於來自RequestData的參數是sort[Field]=Type

任何幫助在這裏將不勝感激!

編輯:

我改變了我的RequestData類這樣的:

public class RequestData 
{ 
    public int current { get; set; } 
    public int rowCount { get; set; } 
    public Dictionary<string, string> sort { get; set; } 
    public string searchPhrase { get; set; } 
    public Guid id { get; set; } 
} 

現在model持有sort{[Field, Type]}(一個數據的例子)。

如果這是一個很好的做法,我如何訪問FieldType

+0

我試着編輯你的問題,因爲其中一個類沒有格式化。增加了4個空格,但最小編輯是6! – Neil

+0

對不起,剛剛批准了一個編輯。感謝您指出。 –

回答

0

您可以通過多種不同的方式實現此目的;在每種情況下,您的問題根本不是遵循該數據類型的modelbinder約定。

首先,IEnumerable如果您打算重新發布,則不在此列。這不是一個可轉位類型,因此模型綁定器將永遠無法綁定到它。但是,使用類似List的替代方法,就好了。然後,您的參數名稱只需採用以下格式:ListProperty[N].Property,其中N是索引。因此,對於您的情況,您可以使用sortItems[0].Field=LastName&sortItems[0].Type=desc,它對您的模型會很好。

對於使用字典,您的名字應採用DictionaryProperty[N].KeyDictionaryProperty[N].Value的格式,其中N也是索引。在你的場景看起來像sort[0].Key=LastName&sort[0].Value=desc