ASP.NET MVC의 "Xlement"속성 자동 결합
-
22-08-2019 - |
문제
사용자가 데이터베이스에서 특정 엔터티를 업데이트 할 수 있도록 "편집"작업과 "편집"보기가 있습니다.
데이터베이스 유형은 "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;
}
}
제휴하지 않습니다 StackOverflow