: 보기는 두 가지 형태가 있습니다. 유치원 1 및 형식 2를
Form1에 두 부분이 있습니다.
첫 번째 부분 : 두 개의 텍스트 상자와 만들기 단추와 저장 단추가 있습니다.
두 번째 부분은 입니다.
그래서 두 개의 텍스트 상자를 채우고 유효성 검사를 통과하지 못하면 만들기 버튼을 누르면 오류 메시지가 표시됩니다. 유효성 검사를 통과하면 값을에 삽입하고 값을 form2에 삽입하십시오.
[HttpPost] 작업 Create 매개 변수 목록 모델이 있습니다.
Save (저장) 버튼을 누르면 form2의 값이 컨트롤러 모델에서 List 모델로 매핑됩니다.
모델
public class HomeModel
{
[Required]
public string Name { get; set; }
[Required]
public string Number { get; set; }
}
컨트롤러 :
[HttpPost]
public ActionResult Create(List<HomeModel> models)
{
// TODO: Add insert logic here
}
보기 :
@model MvcApplication1.Models.HomeModel
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm("Create", "Home", FormMethod.Post, new { id = "form1" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>HomeModel</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Number)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Number)
@Html.ValidationMessageFor(model => model.Number)
</div>
<p>
<input type="submit" value="Create" id="btnCreate" />
<input type="button" value="Save" id="btnSave" />
</p>
</fieldset>
<table id="tb"></table>
}
<div id="FormInfo" style="display: none;">
<form action="/Home/Create" id="form2" method="post"></form>
</div>
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$(function() {
$("#form1").submit(function() {
var ErrorLength = $(".field-validation-error").length;
if (ErrorLength <= 0) {
var nameValue = $("#Name").val();
var numberValue = $("#Number").val();
InsertToForm2(nameValue, numberValue);
InsertToTable(nameValue, numberValue);
}
return false;
});
$("#btnSave").click(function() {
$("#form2").submit();
});
});
function InsertToForm2(nameValue, numberValue) {
var inputCount = $("#form2 input").length/2;
var combineHTML = "<input type='text' name='models[" + inputCount + "].Name' value='" + nameValue + "' /> ";
combineHTML += "<input type='text' name='models[" + inputCount + "].Number' value='" + numberValue + "'/> ";
$("#form2").append(combineHTML);
}
function InsertToTable(nameValue, numberValue) {
var combineHTML = "<tr><td>" + nameValue + "</td><td>" + numberValue + "</td></tr>";
$("#tb").append(combineHTML);
}
</script>
}
Example Download
서버 측 유효성 검사에 상관없이 작동합니다. 클라이언트 측 유효성 검사에는 적절한 속성이 필요합니다. 직접 추가해야합니다. 하지만 서버 측 유효성 검사에는 해당 서버에 대한 액세스 권한이 없으므로 문제가 발생하는 이유를 모르겠습니다. 어떻게 당신의 물건을 묶고 있습니까? –
서버 쪽 유효성 검사에 아무런 문제가 없습니다. – joshb
질문에 명확하지 않았습니다. 유효성 검사가 전혀 작동하지 않는 것처럼 들리게 만들었습니다. 예, 유효성 검사 속성을 클라이언트 쪽에서 수동으로 추가해야합니다. –