在我的ASP.NET MVC 5网站中,我有这种情况:
我有一个GridView,我可以只获取默认行或所有行(包括已删除的行)。我试图使用名为' cbxGetAll'的视图功能区中的CheckBox来控制它。
所以,这是我的剧本:
<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
}
}
我更改了URL中的getAll参数,但效果很好。 但问题是,当ActionResult完成时,它会重新加载页面(当然)然后我丢失了复选框状态。 我该如何处理?
答案 0 :(得分: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 });
}