コンテンツ データが動的に拡張できるタスク システムを作成したい (さまざまな種類の入力 (テキスト、画像、ドロップダウンなど) を使用)。私の計画は、次のモデルを作成し、いくつかのカスタム HtmlHelpers 生成の助けを借りて作成することです。私の見解。
モデル:
public class Task
{
public int TaskId { get; set; }
public string Name { get; set; }
public virtual List<TaskData> TaskData { get; set; }
}
public enum TaskDataType
{
TextType1, TextType2, E-mail, Image
}
public class TaskData
{
public int TaskDataId { get; set; }
public int TaskId { get; set; }
public TaskDataType Type { get; set; }
public string Name { get; set; }
[Required]
public string Data { get; set; }
public bool Required { get; set; }
public virtual Task Task { get; set; }
}
意見:
タスクの検証は、デフォルトの HtmlHelpers ですぐに使用できますが、次のようなものを作成しようとすると:
@if (Model.TaskData != null)
{
foreach (var taskData in Model.TaskData)
{
@Html.DisplayTextFor(td => taskData.Name)
@Html.TextBoxFor(td => taskData.Data)
@Html.ValidationMessageFor(td => taskData.Data)
}
}
私のビューでは、検証がうまくいかなくなり、クライアント サイトの検証は forech ループの最初の入力のみを検証し、コントローラーの ModelState には TaskData フィールドに関するデータが含まれていません。
だから私は2つの質問があります:
これは正しい道ですか、それとも別の方法で考える必要がありますか?
これが私が望むものを作成する有効な方法である場合、ビルドイン検証を機能させる方法はありますか?