У меня есть веб-сайт ASP.Net Core 2.1 MVC, над которым я работаю.
В одном из моих представлений я настроил два списка с множественным выбором, чтобы позволить клиенту назначать пользователей сайту, предоставляя список всех неназначенных пользователей в левом списке и список назначенных пользователей направый список, используя пример Esua Silva для html / javascript / scss.Это работает просто отлично.
Для обратной записи я понял, что мне нужно выбрать все элементы в новом списке «Назначенные пользователи» при отправке, поэтому я использую JavaScript для настройки всех параметров в «Списке назначенных пользователей» наЗначение true, когда пользователь нажимает кнопку обновления (отправки).
Однако я не получаю список пользователей в моей модели, поэтому я могу работать с ними в контроллере при обратной записи. Список назначенных пользователей вмодель всегда имеет счетчик 0, когда она передается в метод POST контроллера.
Вот мой список HTML с несколькими вариантами выбора в представлении.
<!-- User Assignment Tab -->
<div role="tabpanel" class="tab-pane" id="assignUsersTab" aria-labelledby="assign-users-tab">
<div class="card-body ml3 mr3">
<div class="row">
<div class="col-5">
<label>Users Assigned to Site</label>
<select multiple="multiple" id="lstBox1" name="AssignedUserList" size="10" asp-items="@(new SelectList(Model.AssignedUserList, "UserId", "Name"))" class="form-control">
</select>
</div>
<div class="col-2 text-center subject-info-arrows pt-5">
<input type="button" id="btnAllRight" value=">>" class="btn btn-default"/><br/>
<input type="button" id="btnRight" value=">" class="btn btn-default"/><br/>
<input type="button" id="btnLeft" value="<" class="btn btn-default"/><br/>
<input type="button" id="btnAllLeft" value="<<" class="btn btn-default"/>
</div>
<div class="col-5">
<label>Unassigned Company Users</label>
<select multiple="multiple" id="lstBox2" size="10" name="UnassignedUserList" asp-items="@(new SelectList(Model.UnassignedUserList, "UserId", "Name"))" class="form-control"></select>
</div>
<div class="clearfix"></div>
</div>
</div>
</div>
Вот моя модель представления.
public class EditSiteViewModel
{
public int Id { get; set; }
[Required]
[StringLength(50, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 2)]
[Display(Name = "Site Name")]
public string SiteName { get; set; }
[Required]
[Display(Name = "Company ID")]
public int CompanyId { get; set; }
[Display(Name = "Company Name")]
public string CompanyName { get; set; }
[Display(Name = "App ID")]
public string AppId { get; set; }
[Display(Name = "App Key")]
public string AppKey { get; set; }
[Display(Name = "Admin Site")]
public bool IsAdminSite { get; set; }
[Display(Name = "Enabled")]
public bool IsEnabled { get; set; }
public string ReturnUrl { get; set; }
public List<Company> CompanyList { get; set; }
public List<UserSiteItem> UnassignedUserList { get; set; }
public List<UserSiteItem> AssignedUserList { get; set; }
public List<ApplicationUser> CompanyUsersList { get; set; }
}
Вот мой jquery для операции SelectAll, когда пользователь нажимает кнопку Обновить
$('#site-form').on("submit", selectAll);
function selectAll() {
$("#lstBox1").find("option").each(function() {
$(this).attr('selected', true);
});
console.log(`SelectAll processed`);
}
Я вижу, что console.log получает удар, когда я F12 в Chrome.
Вот моя подпись метода редактирования POST в моем контроллере.
[HttpPost]
public async Task<IActionResult> Edit(EditSiteViewModel editSite, string cancel)
Когда я проверяю свойства EditSiteViewModel после отправки, я вижу, что свойство AssignedUserList имеет счетчик0. Я вижу другие свойства в моей модели представления, поэтому я знаю, что материал публикации формы работает, но не для списка с множественным выбором.
Я предполагаю, что проблема связана с тем, как я пытаюсь связатьсписок множественного выбора со свойством viewmodel.Я видел ТАК сообщения, которые говорят, что я должен поставить [] после текста в имени.(т.е. name = "AssignedUserList []" в
Я потратил много часов на поиски решения без удачи. Любая помощь будет принята с благодарностью.