나는 다음과 같은 간단한 개체가 :@ Html.ListBoxFor 키 대신 선택한 항목을 반환 할 수 있습니까?
@using (Html.BeginForm("CreateThings", "ThingStorage"){
@Html.ListBoxFor(x => x.SelectedThings, new MultiSelectList(Model.SelectedThings,"ThingId", "ThingName")
<input id="thingSelect" type="button" value="<" />
<input id="thingDeselect" type="button" value=">" />
@Html.ListBoxFor(x => x.UnselectedThings, new MultiSelectList(Model.UnselectedThings,"ThingId", "ThingName")
}
이 나에게 모델 오류를 줄 것이다 : 내가 현재 가지고하는 것은 이것이다
public class Thing
{
public int ThingID { get; set; }
public string ThingName { get; set; }
}
public class WrapperThing
{
public List<Thing> SelectedThings{ get; set; }
public List<Thing> UnselectedThings{ get; set; }
}
public class ThingStorageController
{
[HttpPost]
public ActionResult CreateThings(WrapperThing wt)
if(ModelState.IsValid){
//Modelstate has binding errors
}
}
}
내가해야 할 것은이 http://jsfiddle.net/timotheus/7JHA4/
같은입니다 게시물에지도 문자열을 객체 유형으로 가져올 수 없다고 말하는 것은 올바른 것입니다. 선택한 객체의 ID 만 다시 전송되기 때문입니다. 개체 목록 자체를 다시 게시 할 수있는 방법이 있습니까?
오, 보너스 질문으로 대답에서 이것을 고려해보십시오. 실제로 선택한 목록뿐만 아니라 각 목록의 전체 내용을 게시하고 싶습니다. 아마도 ListBoxFor()는 내가 정말로 원하는 컨트롤이 아니며, 내가 성취하고자하는 것에 대한 더 나은 대안을 제안 할 수 있습니까?
조치 코드를 추가하고보기 코드를 작성하십시오. –
나는 이미 분명하다고 생각하지만 어쨌든 조치를 추가하고 양식 코드를 보았습니다. – EvilWeebl
왜 그걸 원하니? 선택한 ID를 다시 게시하고 컨트롤러에 원래 컬렉션을 가져 와서 비교를 수행합니다 (컬렉션을 나타내는 많은 숨겨진 입력을 렌더링 한 다음 모두를 변경하지 않고 게시하면 성능이 저하됩니다). WebForms에서 ViewState를 모방하려고합니다. –