나는 다음 한 코드 :게시물 사이에 선택 해제하지 ListBoxFor
<div class="row form-group">
@Html.LabelFor(x => x.GroupCriteria.Name, Translation.Name, new { @class = "col-sm-4 control-label" })
<div class="col-sm-4">
@Html.ListBoxFor(m => m.GroupCriteria.Name, Model.NameList, new { @class = "multi-select-custom" })
</div>
</div>
...
<button type="submit" name="removeCriterion" value="Name">X</button>Name: @(string.Join(",", Model.GroupCriteria.Name))</button>
...
<button type="submit">@Translation.Update</button>
그리고 컨트롤러 : 이제
public ActionResult GetUsers(GroupCriteriaModel groupCriteria, string removeCriterion)
{
if("Name".Equals(removeCriterion)) groupCriteria.Name.Clear();
...
return View(modelWithCriterias);
}
무슨 일이 일어나고 있는지 :
I에 의해 일부 값의 선택을 취소/선택 선택을 클릭 한 다음 "업데이트"를 클릭하면 모든 것이 잘 작동합니다. 반환 된 페이지의 선택은 게시 된 것과 동일합니다.
"이름"을 지우려면 "X"를 클릭하십시오. "removeCriterion"은 "Name"과 동일하므로 이름 목록이 지워집니다 (디버거에서 비어 있음). 뷰에서 디버거 : "Model.GroupCriteria.Name"은 여전히 비어 있으며 "Model.NameList"중 하나도 "Selected"(true로 설정)입니다. 그러나 반환 된 HTML은 이전과 같은 선택을 포함합니다 (동일한 항목의 속성은 'selected = "selected"'입니다).
MVC에서 수행하는 일종의 캐싱입니까? 이것을 피하는 방법?