문제

사용자가 데이터베이스에서 특정 엔터티를 업데이트 할 수 있도록 "편집"작업과 "편집"보기가 있습니다.

데이터베이스 유형은 "XML"이며 DataContext (LINQ-to-SQL을 사용하고 있음)는이를 유형 "Xlement"의 속성으로 나타냅니다.

내 생각에, 나는 다음과 같은 프로세스의 "toString ()"출력에서 텍스트 영역을 렌더링합니다.

<%= Html.TextArea("Text", Model.Text.ToString()) %>

이것은 객체에서 데이터를 가져올 때 잘 작동하지만 새 데이터를 다시 게시하려고하면 공백으로 돌아옵니다.

자동 바인더가 유형 Xlement의 속성을 다루는 방법을 모르기 때문이라고 생각합니다.

이를 해결하거나 자동 바인더의 동작을 어떻게 든 사용자 정의하여 들어오는 데이터를 올바르게 해제 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

당신은 이것에 대해 사용자 정의 바인더를 작성할 수 있습니다. IModelBinder 상호 작용. 이 바인더는 메소드 자체에 등록 할 수 있습니다.

public ActionResult Edit([ModelBinder(typeof(XElementBinder))] XElement element)
{ ... }

또는 전 세계적으로 XElement바인더를 등록하여 응용 프로그램에 Global.asax:

ModelBinders.Binders[typeof(IPrincipal)] = new PrincipalModelBinder();

사용자 정의 바인더는 다음과 같이 보입니다.

public class XElementModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext,
                            ModelBindingContext bindingContext)
    {
        string text = controllerContext.HttpContext.Request.Form["Text"];
        XElement element = ...;
        // Get XElement instance from posted data.
        return element;
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top