2014-04-16 79 views
0

在我的ASP.NET MVC 5網站我有這種情況:如何在獲取後保留CheckBox值?

我有一個GridView,我可以得到只是默認行或所有行(包括刪除的)。我試圖控制使用名爲'cbxGetAll'的視圖功能區中的複選框。

所以,這裏是我的腳本:

<script> 
function OnCommandExecuted(s, e) { 
    if (e.item.name == "cbxGetAll") { 
     if (e.parameter) { 
      window.location.href = '@Url.Action("Index",new {getAll = true})'; 
      return; 

     } else { 
      window.location.href = '@Url.Action("Index",new {getAll = false})'; 
      return; 
     } 
    } 
</script> 

而我的操作:

public ActionResult Index(bool? getAll) 
    { 
     if (getAll != null && (bool) getAll) 
     { 
      //Return Without Filter 
     } 
     else 
     { 
      //Return With Filter 
     } 
    } 

我改變GETALL參數中的URL,它工作得很好。 但問題是,當ActionResult完成時,它重新加載頁面(當然),然後我失去了複選框狀態。 我該如何處理?

回答

0

這是關於查看模型。您應該返回具有複選框值的視圖模型,並讓您的視圖使用該值。如果您還要返回數據,則只需將數據(不管它是什麼)放入視圖模型中。

實施例:

public class MyViewModel 
{ 
    public bool GetAll { get; set; } 

    public SomeDataModel[] MyData { get; set; } 
} 

public ActionResult Index(bool? getAll) 
{ 
    SomeDataModel[] data; 

    if (getAll != null && (bool) getAll) 
    { 
     var data = GetSomeData(true); 
    } 
    else 
    { 
     var data = GetSomeData(false); 
    } 

    return View(new MyViewModel() { MyData = data, GetAll = getAll == true }); 
}