2014-05-22 54 views
0

我正在使用第三方庫的網格使用固定查詢字符串參數,如下所示。MVC模型綁定在控制器操作時,給出具有特殊字符鍵的查詢字符串

/Home/GetData/?$skip=0&$top=10 

這些參數在他們的關鍵一$,我想知道是否有辦法仍然有這些參數的MVC模型綁定工作。

把它們應用到這一行動(因爲在參數名稱$的,將無法編譯。

public ActionResult GetData(int $skip, int $top) 
{ 
... 
return View(); 
} 
+4

您可能需要爲自定義模型粘合劑。這將是一個很好的解決方案。快速和骯髒的方式,雖然是解析查詢字符串內的行動 – Andrei

+1

哦,快速搜索揭示了以下事情:[ActionParameterAlias Nuget包](http://jeffreypalermo.com/blog/adding-an-alias-to-an-action-參數換模型結合式-ASP淨MVC /)。從來沒有坦率地看到它的行動,但可能值得一試。 – Andrei

+0

@Andrei感謝,指出我在正確的方向,我已經添加了我剛剛嘗試,並且都似乎工作正常 – Pricey

回答

1

感謝安德烈指着我在正確的方向。

下面的解決方案都是訣竅

通過前綴別名模型綁定

public ActionResult GetData([Bind(Prefix = "$top")]int top = 0, [Bind(Prefix = "$skip")]int skip = 0) 
{ 
    return View(); 
} 

通過Request對象來獲取查詢字符串值

public ActionResult GetData() 
{ 
    var topParam = Request.QueryString["$top"]; 
    var skipParam = Request.QueryString["$skip"]; 

    var top = 0; 
    int.TryParse(topParam, out top); 

    var skip = 0; 
    int.TryParse(skipParam, out skip); 

    return View(); 
} 
+0

不知道這個'BindAttribute',非常有用的東西。涼! – Andrei

相關問題