C# HTTPRequest连接以前的值
我有一个局部视图,它将表单传递给MVC控制器的复选框列表。选中的值是特定的。问题是,每次我调用此视图时,新值都会连接到旧值。例如,第一次值为true,第二次值为true,true,第三次值为true,true,true等等。我怎样才能避免这种情况 以下是局部视图的代码:C# HTTPRequest连接以前的值,c#,html,asp.net-mvc,http-post,forms,C#,Html,Asp.net Mvc,Http Post,Forms,我有一个局部视图,它将表单传递给MVC控制器的复选框列表。选中的值是特定的。问题是,每次我调用此视图时,新值都会连接到旧值。例如,第一次值为true,第二次值为true,true,第三次值为true,true,true等等。我怎样才能避免这种情况 以下是局部视图的代码: @using (Html.BeginForm("SaveGridSettings", "ExtendedGrid", FormMethod.Post)) { <div class="alert alert-warn
@using (Html.BeginForm("SaveGridSettings", "ExtendedGrid", FormMethod.Post))
{
<div class="alert alert-warning">
@Html.Hidden("objectType", (string)ViewBag.GridType)
@Html.Hidden("userID", (string)ViewBag.UserID)
<table width="100%" border="1">
@{
using (var context = new EfDbContext())
{
var cellsInRow = 10;
var i = 0;
while (i < ViewBag.PropertiesList.Length)
{
<tr>
@{ int fin = ViewBag.PropertiesList.Length - i < cellsInRow ? ViewBag.PropertiesList.Length - i : cellsInRow; }
@for (var j = 0; j < fin; i++)
{
string propertyName = ViewBag.PropertiesList[i];//.Name;
var columnInfo = context.ExtendedGridColumnsViewSettings.AsEnumerable().FirstOrDefault(it => it.TypeName.Equals(ViewBag.GridType) &&
it.FieldName.Equals(propertyName) &&
it.UserID.Equals(ViewBag.UserID));
var isChecked = columnInfo == null || columnInfo.IsChecked;
//if (ViewBag.PropertiesList[i].PropertyType.GetInterface("ICollection") == null)
//{
<td align ="center">
@Html.Label(propertyName)
@Html.CheckBox(propertyName, isChecked)
@{
j++;
}
</td>
//}
}
</tr>
}
}
}
</table>
<br><br>
<center>
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="submit" id="approve-btn" class="btn btn-danger">Save</button>
</center>
</div>
}
我认为这是引导模式弹出。当你关闭它时,你不会破坏它。因此,每次打开新模式并发布数据时,它也会发布以前模式的现有复选框的数据。这可能是个问题。这只是对你身边可能发生的事情的猜测。@AnkushJain,是的,这是引导模式弹出窗口。我应该如何正确地销毁它?$'myModal'。在'hidden.bs.modal'上,函数{//在弹出窗口在此事件中被隐藏时清除弹出窗口的内容}
[HttpPost]
public ActionResult SaveGridSettings()
{
string settings = "";
var objectType = Request["objectType"];
var userID = Request["userID"];
var listOfProperties = Request.Form.AllKeys.Where(it => !it.Equals("objectType") && !it.Equals("userID"));
using (var context = new EfDbContext())
{
foreach (var property in listOfProperties)
{
if (String.IsNullOrEmpty(Request[property])) continue;
var isChecked =
Boolean.Parse(Request[property]); //HERE THE VALUE COMES CONCATENATED
var existingSetting =
context.ExtendedGridColumnsViewSettings.AsEnumerable()
.FirstOrDefault(
it =>
it.TypeName.Equals(objectType) && it.FieldName.Equals(property) &&
it.UserID.Equals(userID));
if (existingSetting != null)
{
existingSetting.IsChecked = isChecked;
context.ExtendedGridColumnsViewSettings.Attach(existingSetting);
((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.ChangeObjectState(existingSetting, EntityState.Modified);
}
else
{
existingSetting = new ExtendedGridColumnsViewSetting
{
FieldName = property,
TypeName = objectType,
UserID = userID,
IsChecked = isChecked
};
context.ExtendedGridColumnsViewSettings.Add(existingSetting);
}
}
context.SaveChanges();
}
var url = Request.UrlReferrer.AbsolutePath;
return Redirect(url);
}