나는 다음과 같은 시나리오가 : C#을 기본 프로젝트, 회사의 다른 모든 프로젝트에서 사용하는 모든 데이터 도메인 (사용자 정의 유형)로한다. 그래서 약간 수정하기가 어렵습니다.MVC 사용자 정의 형 속성은 내 모델에 바인딩되지
이제, 우리는 참고로 그 기본 프로젝트와 우리의 첫 MVC 프로젝트를 생성하고,이 모델은 사용자 정의하는 문자열 속성 유형 나던 작업을 바인딩 :
[Serializable]
[TypeConverter(typeof(ShortStrOraTypeConverter))]
public class ShortStrOra : BaseString
{
public ShortStrOra()
: this(String.Empty)
{
}
public ShortStrOra(string stringValue)
: base(stringValue, 35)
{
}
public static implicit operator ShortStrOra(string stringValue)
{
return new ShortStrOra(stringValue);
}
public static implicit operator string(ShortStrOra value)
{
if (value == null)
{
return null;
}
else
{
return value.ToString();
}
}
public void Add(object o)
{
}
}
TypeConverter가 :
public class ShortStrOraTypeConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof(string))
return true;
return base.CanConvertFrom(context, sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
if (value is string)
return new ShortStrOra(Convert.ToString(value));
return base.ConvertFrom(context, culture, value);
}
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
if (destinationType == typeof(string))
return ((ShortStrOra)value).ToString();
return base.ConvertTo(context, culture, value, destinationType);
}
}
그리고 간단한 테스트에서이 단일 클래스를 사용하면 Name 속성이 바인딩되지 않았지만 성이 있습니다.
public class TesteModel
{
public ShortStrOra Name {get; set;}
public String Lastname { get; set; }
public TesteModel() { }
}
내보기 :
@using (Html.BeginForm("EditMember", "Home", FormMethod.Post, new { @id = "frmEditMembers" }))
{
@Html.TextBoxFor(m => m.Name)<br />
@Html.TextBoxFor(m => m.Lastname)
<input type="submit" value="Salvar" />
}
내 컨트롤러 :
마지막으로public ActionResult EditMember(TesteModel model)
{
return View("Index", model);
}
, 문제는? 직렬화? 모델 바인딩? 변환기? 나는 가야할 곳을 모른다. 오류 또는 예외가 없습니다.
모든 ideias? 감사
당신은 실제로 당신이 겪고있는 문제가 무엇 말했다하지 않은 :
컨트롤러에서 사용자 정의 모델 바인더를 사용하려면? 너 무슨 문제있어? – OliverTextboxFor 대신 @ Html.EditorFor()를 시도하십시오. 양식을 제출할 때 Fidler에서 무엇을 볼 수 있습니까? 필요한 모든 데이터를 처리하고 있습니까? – trailmax