は、私は次のモデルがあります:あなたが見ることができるように、私たちは、1つまたは複数のファイルをアップロードするためのフォームを持っている動的フォームでのMVCモデル検証?
@using (Html.BeginForm("Index", "FileManagement", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<table class="content-table" style="min-width: 600px; border-spacing: 15px;">
<tr>
<td colspan="4" class="table-header">New File
<div class="add-icon">+</div>
</td>
</tr>
<tr>
<td>Name: </td>
<td>@Html.TextBoxFor(q => q.NewFile.Name, new { maxlength = "100", id = "NewFile_Name1", name = "NewFile.Name1" })
<br />@Html.ValidationMessageFor(q => q.NewFile.Name)
</td>
<td>
<input type="file" id="FileUploadField1" /></td>
<td style="width: 16px; text-align: center;"> </td>
</tr>
<tr>
<td colspan="4" style="text-align: center;">
<input type="submit" value="Submit" />
</td>
</tr>
</table>
<script type="text/javascript">
$('.content-table .add-icon').click(function() {
var lastFileField = $('.content-table input[type="file"]').last();
var lastId = lastFileField.attr('id').replace(/\D*/g, '');
lastId = parseInt(lastId) + 1;
var newFields = '<tr>' +
'<td>Name : </td>' +
'<td><input data-val="true" data-val-length="Max chars is 100, Min chars is 3" data-val-length-max="100" data-val-length-min="3" data-val-required="Required" id="NewFile_Name' + lastId + '" name="NewFile.Name' + lastId + '" type="text" value="" /><br /><span class="field-validation-valid" data-valmsg-for="NewFile.Name' + lastId + '" data-valmsg-replace="true"></span></td>' +
'<td><input type="file" id="FileUploadField' + lastId + '"/></td>' +
'<td style="text-align:right;"><div class="delete-icon"></div></td>' +
'</tr>';
var lastTr = $(lastFileField).parents('tr:first')[0];
$(lastTr).after(newFields);
});
$('.content-table .delete-icon').live('click', function() {
$(this).parents('tr:first').remove();
});
</script>
}
:
public class FileModel
{
public int Id { get; set; }
[Required(ErrorMessage = "Required")]
[StringLength(100, ErrorMessage = "Max is 100, Min is 3", MinimumLength = 3)]
public string Name { get; set; }
public string Path { get; set; }
[Required(ErrorMessage = "Required")]
public string FileTypeId { get; set; }
public DateTime RegistrationDate { get; set; }
}
次
が私の見解です。だから、ユーザーに+ボタンを追加して、フォームにファイルフィールドを追加できるようにしました。
ユーザーはファイルの名前を入力し、アップロードするファイルを選択する必要があります。しかし、MVCクライアントバリデーターは、Razor
で追加された最初の入力を検証するだけです。
MVCバリデータを強制的にクライアント側とサーバー側のすべてのフィールドを検証する方法はありますか。
もう一つの問題は、我々はMVCコントローラでのフィールド値を取得して処理することができますどのように
。
おかげ
私の質問は、データモデルのバインディングだけではなく、主な質問は、JavaScriptで追加された入力フィールドのクライアント側の検証に関するものでした。 –
私は両方の質問に解答で答えましたが、申し訳ありません、私は自分の投稿を編集しています。 – Pluc
もう一度読んだ後、私は実際にトラックから外れていたことに気付きました。私のすべての投稿はあなたのサブ質問とサーバー側の検証だけに答えます。これはクライアント側には影響しません。 Edit2は元の投稿への答えです。質問のタイトルには適切な用語を使用する必要があります。モデル検証はサーバー側の検証です。だからこそ私は混乱してしまった(しかし、はい、私自身も投稿にもっと注意を払うべきだった)。 – Pluc