2014-03-27 72 views
0

我有一個使用C#MVC包裝器定義的Kendo UI網格。當我在一列標題點擊排序,它似乎叫,我已經定義了read動作:發送到排序操作的Kendo UI參數爲空

//index.cshtml 
.DataSource(dataSource => dataSource 
    .Ajax() 
    .Model(model => ...) 
    .Read(read => 
    { 
     read.Action("Read", "MyData").Type(HttpVerbs.Post).Data("getRequestData()")); 
    }) 

//MyDataController.cs 
public ActionResult Read([DataSourceRequest] DataSourceRequest request, string p1, string p2, string p3, string p4) 

在搜索時,它不會調用getRequestData出於某種原因,一些參數是空的,但有些不是。

//MyPage.js 
function getRequestData() { 
    return { 
     p1: $("#p1").val(), 
     p2: $("#p2").val(), 
     p3: $("#p3").val(), 
     p4: $("#p4").val() 
    }; 
}; 

好像我可以使用parameterMap並檢查類型,以確保數據的排序時發送:

parameterMap: function(data, type) { 
    if (type == "sort") { 
    return getRequestData(); 
    } 
} 

但所有使用parameterMap的例子使用JavaScript時定義網格而不是c#的包裝。

我是否應該使用parameterMap,如果是的話,如果我的網格是使用包裝器定義的,如何使用它?如果我不能使用parameterMap,是否有任何理由排序不發送所有參數?

回答

0

嗨,你必須刪除().Data("getRequestData")它的工作。

.Read(read => 
{ 
read.Action("Read", "MyData").Type(HttpVerbs.Post).Data("getRequestData")); 
}) 
+0

看起來像你是正確的。我的getRequestData實際上包含了一些我從我的問題中省略的參數。所以我改變了它'.Data(「function(){return getRequestData();}」))'它似乎工作。將測試更多,然後接受你的答案。知道'parameterMap'是否可以在c#中使用,仍然會很有趣。 – row1

+0

@ row1 if parameterMap'work然後讓我知道,我很高興它爲你工作。 – Jaimin