[英]HTML.CheckBox persisting state after POST - Refresh ModelState?
[英]ASP MVC 5 - keep @html.checkbox state after page reload after clicking “submit button”
我創建了一個頁面,我可以通過實體框架搜索商店詳細信息,我在表格中添加了一列復選框。 通過搜索按鈕提交后,我想保留“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; }
}
我會這樣:
在partial class上添加一個flag參數。
public string checkStatus {get; set;}
默認情況下,這將為false,並且不會選擇任何選項。
提交功能后,您有所選項目的列表,您可以將它們設置為選中(checkStatus將為true)。
MVC沒有像ASP.Net WebForms這樣的ViewState(不確定viewstate是一個特性還是缺點)。 因此,您必須使用隱藏字段或變量保存復選框的狀態。 你可以用jquery和ajax來試試這個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.