Tôi có Model sau:
Xác thực mô hình MVC trên biểu mẫu động?
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; }
}
sau đây là quan điểm của tôi:
@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>
}
Như bạn có thể thấy, chúng ta có một hình thức để tải lên một hoặc nhiều file. Vì vậy, tôi đã thêm một nút + cho người dùng rằng họ có thể thêm một trường tệp để tạo thành.
Người dùng phải nhập tên tệp và chọn tệp để tải lên. Nhưng trình xác thực ứng dụng khách của MVC chỉ xác thực các đầu vào đầu tiên được thêm vào với Razor
.
Làm cách nào để buộc trình xác thực MVC xác thực tất cả các trường ở phía máy khách và phía máy chủ.
câu hỏi khác là:
Làm sao chúng ta có thể xử lý nhận các giá trị thực tế tại một Controller MVC.
Cảm ơn
Câu hỏi của tôi không chỉ liên quan đến mô hình dữ liệu, câu hỏi chính là về xác thực phía máy khách trên các trường nhập được thêm bằng javascript –
Tôi trả lời cả hai câu hỏi với giải pháp chứ không phải giải thích. Xin lỗi, tôi đang chỉnh sửa bài đăng của mình. – Pluc
Sau khi đọc một lần nữa, tôi nhận ra tôi đã thực sự ra khỏi đường đua. Tất cả bài đăng của tôi chỉ trả lời câu hỏi phụ và xác thực phía máy chủ của bạn. Điều này không ảnh hưởng đến phía khách hàng. Edit2 là câu trả lời cho bài viết gốc. Bạn nên sử dụng các thuật ngữ thích hợp trong tiêu đề câu hỏi của mình. Xác thực mẫu là xác thực phía máy chủ. Đó là lý do tại sao tôi đã nhầm lẫn (nhưng có, tôi nên chú ý nhiều hơn đến bài đăng quá). – Pluc