У меня есть форма: Просмотр бритвы:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group row">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "col-sm-2 col-md-1 col-form-label" })
<div class="col-sm-10 col-md-3">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group row">
@Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "col-sm-2 col-md-1 col-form-label" })
<div class="col-sm-10 col-md-3">
@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group row">
@Html.LabelFor(model => model.Mac, htmlAttributes: new { @class = "col-sm-2 col-md-1 col-form-label" })
<div class="col-sm-10 col-md-3">
<span class="add-new-icon glyphicon glyphicon-plus-sign" id="add_mac"> </span>
@Html.EditorFor(model => model.Mac, new { htmlAttributes = new { @class = "form-control", @id = "mac_addr" } })
@* @Html.DropDownListFor(x => Model.SelectedMac, new SelectList(ViewBag.Macs, "Value", "Text"), htmlAttributes: new { @class = "form-control", id = "mac_addr" })
@Html.ValidationMessageFor(x => x.SelectedMac, "", new { @class = "text-danger" }) *@
</div>
</div>
}
Визуализированный HTML:
<div class="form-group row new_mac_wrapper">
<div class="col-md-offset-3">
<div class="new_mac_container">
</div>
</div>
</div>
<div class="form-group row">
<div class="col-md-offset-2 col-sm-10 col-md-2">
<input type="submit" value="Register" class="btn btn-primary col-sm-offset-1" />
</div>
</div>
}
<form action="/Users/Register" method="post">
<input name="__RequestVerificationToken" type="hidden" value="w3GWVNW8nPHGcTz1kIBbyGu7386qDwfOFNprYBlmF8ve9KzKS47SyVOYFgf_jGFRzOum7oNKUZRKqtIinDP-ed8Lt5kP7kqHFJzrLmgG9P81">
<div class="form-group row">
<label class="col-sm-2 col-md-1 col-form-label" for="Name">Name</label>
<div class="col-sm-10 col-md-3">
<input class="form-control text-box single-line" id="Name" name="Name" type="text" value="">
<span class="field-validation-valid text-danger" data-valmsg-for="Name" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-md-1 col-form-label" for="Email">Email</label>
<div class="col-sm-10 col-md-3">
<input class="form-control text-box single-line" id="Email" name="Email" type="text" value="">
<span class="field-validation-valid text-danger" data-valmsg-for="Email" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-md-1 col-form-label" for="Mac">Mac</label>
<div class="col-sm-10 col-md-3">
<span class="add-new-icon glyphicon glyphicon-plus-sign" id="add_mac"> </span>
<input class="form-control text-box single-line" id="mac_addr" name="Mac" type="text" value="">
</div>
</div>
<div class="form-group row new_mac_wrapper">
<div class="col-md-offset-3">
<div class="new_mac_container">
<div class="col-sm-10 col-md-3 positioned_relative margin-bottom">
<input readonly="" name="Mac" type="text" class="form-control" value="12556564">
<span class="remove_mac remove-icon glyphicon glyphicon-minus-sign"> </span>
</div>
<div class="col-sm-10 col-md-3 positioned_relative margin-bottom">
<input readonly="" name="Mac" type="text" class="form-control" value="444444">
<span class="remove_mac remove-icon glyphicon glyphicon-minus-sign"> </span>
</div>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-md-offset-2 col-sm-10 col-md-2">
<input type="submit" value="Register" class="btn btn-primary col-sm-offset-1">
</div>
</div>
</form>
Здесь у меня есть три вводас тем же атрибутом имени «Mac».Дополнительные входные данные, имеющие name = 'Mac', генерируются с использованием jquery:
$(document).ready(function(){
$('#add_mac').on('click', function(){
var mac = $('#mac_addr').val();
if(!mac){
alert('Input MAC ADRESS First');
return;
}
var newMAChtml = '<div class="col-sm-10 col-md-3 positioned_relative margin-bottom">';
newMAChtml += '<input readonly name="Mac" type="text" class="form-control" value="'+mac+'" >';
newMAChtml += '<span class="remove_mac remove-icon glyphicon glyphicon-minus-sign"> </span>';
newMAChtml += '</div>';
$('.new_mac_container').append(newMAChtml);
$('#mac_addr').val('');
});
$('body').on('click', '.remove_mac', function() {
$(this).closest('div').remove();
});
});
И я хочу сохранить эти три входа.Я пытаюсь сделать следующее:
[HttpPost]
public ActionResult Register(UserViewModel model)
{
CancellationTokenSource cancelToken = new CancellationTokenSource();
AccountRegistrationRequestMessage requerstMessage = new AccountRegistrationRequestMessage();
requerstMessage.FullName = model.Name;
requerstMessage.EmailAddress = model.Email;
requerstMessage.MacAddresses.Add(model.Mac);
requerstMessage.RegistrationType = AccountRegistrationEnum.IndividualAccountRegistration;
Task<AccountRegistrationResponseMessage> response = _interactor.Handle(requerstMessage, cancelToken.Token);
UserViewModel viewModel = _presenter.Handle(response.Result, model, ModelState);
if (response.Result.ValidationResult.IsValid)
{
//return View("DetailView", viewModel);
}
return View(viewModel);
}
UserViewModel:
public class UserViewModel
{
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string Mac { get; set; }
}
Но в настоящее время сохраняется только последнее значение <input name="Mac" ...
.Я подумал об использовании цикла for, а затем получить к ним доступ через что-то вроде form["Mac"][i]
, но, очевидно, это не сработает.
Собираюсь ли я делать это правильно, и если да, есть ли у кого-нибудь какие-либо предложения по поводукак это может работать?