EditorFor와 같은 것을 원합니다.이 표현식이 가리키는 각 속성에 대한 양식을 생성합니다. 현재의 비헤이비어는 단일 숨겨진 입력을 생성하고 ToString() 값을 값으로 사용하는 것입니다. 나는 각각의 속성에 대해 숨겨진 입력 세트를 만들고 싶습니다. 값이 프리미티브 값이 아니면 차례로 여러 개의 숨겨진 입력으로 나눠야합니다. 이렇게하면 한 동작에서 다른 동작으로 모델을 전달할 수 있습니다.재귀 HiddenFor를 수행하는 쉬운 방법이 있습니까?
나는 그것을 돕기 위해 썼다. 그러나 그것은 이미 있어야 할 것처럼 보인다. 다른 사람이 유용하다고 생각한 경우 도우미가 있습니다.
public static MvcHtmlString MultipleHiddenFor<TModel, TProperty>
(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
return MultipleHiddenHelper(helper, metadata, ExpressionHelper.GetExpressionText(expression));
}
private static MvcHtmlString MultipleHiddenHelper<TModel>(HtmlHelper<TModel> helper, ModelMetadata metadata, string expression)
{
var bldr = new StringBuilder();
foreach (var value in metadata.Properties)
{
var propexpression = expression + "." + value.PropertyName;
if (value.IsComplexType)
{
var propmetadata = ModelMetadata.FromStringExpression(propexpression, helper.ViewData);
bldr.Append(MultipleHiddenHelper(helper, propmetadata, propexpression));
}
else
{
bldr.Append(helper.Hidden(helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(propexpression),
value.Model));
}
}
return new MvcHtmlString(bldr.ToString());
}
이전 양식의 모든 사용자 데이터이며 이후 조치에 의해 유효성이 검사되므로 확인하겠습니다. – Timbo