내 뷰에서받은 데이터를 특정 모델에 바인딩하려고합니다. 양식 데이터를 사전 객체로 변환하려고합니다. 이것은 내가 개발 한 일반적인 메소드 인 TranslateFormData를 사용하여 완성됩니다. 이것은 내가 문제가있는 곳입니다. 이 라인, Dictionary<string, string> data = FormData.TranslateFormData (formData);
이 나에게 문제를 일으키는데이터를 FormCollection에서 모델로 바인딩
[HttpPost]
public System.Web.Mvc.ActionResult SubmitDecision (FormCollection formData)
{
Dictionary<string, string> data = FormData.TranslateFormData (formData);
TPDispatcherNetClient client = new TPDispatcherNetClient ();
*Additional code left out for brevity*
return View ();
}
: 여기
컨트롤러 코드입니다.public static Dictionary<string, string> TranslateFormData<T> (T form) where T : IEnumerable<KeyValuePair<string, string>>
{
Dictionary<string, string> data = new Dictionary<string, string> ();
IEnumerator<KeyValuePair<string, string>> pairs = form.GetEnumerator ();
return data;
}
가 FormCollection 건네 다음과 같은 오류 생산 :
가 어떻게이 작업을 수행 할 수 있습니다 여기에 TranslateFormData의 코드는? 가능한 경우 TranslateFormData를 변경하여 특정 유형을 허용 한 다음 모든 예상 유형을 기반으로 오버로드하지 않도록합니다. 위의 질문이 의미하는 반면The type 'System.Web.Mvc.FormCollection' cannot be used as type parameter 'T' in the generic type or method 'TranslateFormData(T)'. There is no implicit >reference conversion from 'System.Web.Mvc.FormCollection' to 'System.Collections.Generic.IEnumerable>'
EDIT Since initially writing this question I have modified my translation method accordingly:
public static CustomerDecisionRequest TranslateFormData<T> (T form) where T : NameValueCollection, IEnumerable
{
CustomerDecisionRequest request = new CustomerDecisionRequest ();
IEnumerator enumerator = formData.GetEnumerator ();
return request;
}
그래서,이 수정 메이크업 감각을 수행하고 그것은 적절하다?
천국에서는 무엇을하고 있습니까? 사전을 원한다면 사전을 행동 매개 변수로 받아들이고 모델 바인더가 그것을 해결하도록하십시오. –
@ChrisPratt 아무런 습격을받지 않았습니다. 나는 MVC 전체에 대해 아주 새롭고 불행히도 복잡한 프로세스에 MVC를 사용해야한다. 기본적으로 위 코드는 제 컨트롤러에 있습니다. 내가 원하는 것은 게시 된 데이터를 가져와 WCF 서비스에있는 클래스로 변환하는 것입니다. 또한 과부하없이 동일한 프로젝트의 다른 곳에서 "번역"방법을 활용할 수 있기를 원합니다. –
클래스가'Employee'라고하고보기의 컨트롤이 강하게 입력 된 도우미를 사용하여 렌더링되는 경우. '@Html.TextBoxFor (m => m.FirstName)'그런 다음'public ActionResult Edit (Employee model)'에 다시 게시하면 모델이 바인딩됩니다. 당신은 아무것도 번역 할 필요가 없습니다. –