ASP MVC 5 - 点击“提交按钮”后页面重新加载后保持@html.checkbox状态

时间:2017-01-30 07:41:23

标签: c# jquery asp.net asp.net-mvc checkbox

我创建了一个页面,我可以通过实体框架搜索商店详细信息 我在表格中添加了一列复选框。 通过搜索按钮提交后,我想保留“checked = True”复选框。

实现这一目标的推荐方法是什么?

我尝试了以下方法,但点击提交后复选框“取消选中” 1. https://www.sitepoint.com/quick-tip-persist-checkbox-checked-state-after-page-reload/

查看如下:

@using (Html.BeginForm())
{
<p>
    Find by name: @Html.TextBox("SearchString") 
    <input type="submit"  name ="StoreIndexButton" value="Search" />
</p>
}
<table class="table" id="displayresult">

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.name)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.market)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.status)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.oper)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.operator)
    </td>
    <td>
        @Html.ActionLink("Details", "Details", new { id=item.store1 })
    </td>
    <td>
        @Html.CheckBox("selected",new { value = item.store1,     id="selected"+item.store1.ToString() })
    </td>
</tr>
}

</table>

控制器如下:

public ActionResult Index(string StoreIndexButton,string searchString)
{
    var AR_stores = (from m in db.stores
                     select m).Take(10);
    string[] selectedList = Request.Form.GetValues("selected");
    if (!String.IsNullOrEmpty(searchString) && StoreIndexButton =="Search")
    {
         AR_stores = (from m in db.stores
                      select m).Where(s =>   s.name.Contains(searchString));
    }
    return View(AR_stores);    
}

模型如下:

using System;
using System.Collections.Generic;

public partial class store
{
    public int store1 { get; set; }
    public string name { get; set; }
    public string market { get; set; }
    public string status { get; set; }
    public string oper { get; set; }
    public string operator { get; set; } 
}

2 个答案:

答案 0 :(得分:0)

我会这样:

在partial class上添加一个flag参数。

db.sensors.aggregate([
    {
        "$addFields": {
            "yearMonthDay": {
                 "$switch": {
                    "branches": [
                        { 
                            "case": { "$lt": [ { "$hour": "$date" }, 8 ] }, 
                            "then": { /* subtract one day from a measurement at < 08:00 */
                                "$dateToString": { 
                                    "format": "%Y-%m-%d", 
                                    "date": {
                                        "$subtract": [
                                            "$date",
                                            1000 * 60 * 60 * 24
                                        ]
                                    }
                                } 
                            } 
                        },
                        { 
                            "case": { "$gte": [ { "$hour": "$date" }, 8 ] }, 
                            "then": {  /* return actual date */
                                "$dateToString": { 
                                    "format": "%Y-%m-%d", 
                                    "date": "$date" 
                                } 
                            }
                        }
                    ]
                }                   
            },
            "isNight": { 
                "$or": [
                    { "$gte": [ { "$hour": "$date" }, 21  ] },
                    { "$lt": [ { "$hour": "$date" }, 8  ] }
                ]
            }
        }
    },
    { "$match": { "isNight": true } },
    {
        "$group": {
            "_id": "$yearMonthDay",
            "count": { "$sum": 1 }
        }
    }
])

默认情况下,这将为false,并且不会选择任何选项。

提交功能后,您有所选项目的列表,您可以将它们设置为选中(checkStatus将为true)。

答案 1 :(得分:0)

MVC没有像ASP.Net WebForms这样的ViewState(不确定viewstate是一个功能还是缺点)。因此,您必须使用隐藏字段或变量保存复选框的状态。你可以用jquery和ajax

来试试这个