У меня есть представление со списком элементов из модели. Мне нужно добавить флажок в каждую строку, задать пользователю несколько флажков и передать некоторый идентификатор того, какая строка была выбрана контроллеру. Я знаю, как передать одно значение через ссылку действия, но я не уверен, как передать несколько значений через ссылку действия или как "собрать", какие строки были выбраны. Ниже я расскажу о некоторых моих попытках с кодом. Может кто-нибудь помочь мне разобраться, почему я не могу получить значения всех флажков, переданных контроллеру?
Здесь моя страница
Checkbox App ID Date Name
[] 1 5/10 Bob
[] 2 5/10 Ted
[] 3 5/11 Alice
Мне нужно, чтобы пользователь должен был выбрать строки 1 и 3 (например) и передать эти идентификаторы приложения контроллеру.
Я начал перечислять различные попытки, но решил просто показать свою текущую попытку и посмотреть, может ли кто-нибудь указать, что я делаю неправильно. Основное различие, которое я вижу в примерах онлайн и моих, заключается в том, что моя использует PagedList и создает строки таблицы в цикле foreach.
Параметр ints пуст, когда он попадает в контроллер. Как мне получить значения из флажков? Я использовал этот сайт для основной идеи назвать все флажки одинаковыми и передать ICollection через ссылку действия: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/
Вид:
@model PagedList.IPagedList<CarmelFinancialWeb.Models.ModelMerchantSummary>
<div class="block" style="width: 100%; float: left">
<p class="block-heading">
Merchant Application Report
</p>
<div class="table-holder">
<table class="table" style="margin-bottom: 0px">
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
<input type="checkbox" name="ints" value=item.ApplicationID />
</td>
<td>
@Html.ActionLink(item.ApplicationID.ToString(), "ViewApplication", new { ID = item.ApplicationID, edit = 1 }, new AjaxOptions { HttpMethod = "GET" })
</td>
<td>
@Convert.ToDateTime(item.ApplicationDate).ToString("M/d/yy")
</td>
<td>
@item.ApplicantName
</td>
</tbody>
</table>
</div>
</div>
@Html.ActionLink("Print Application", "PrintApplication", "CreateContract", new { @class = "btn btn-primary" })
Контроллер:
[AuthorizeAdmin]
public ActionResult PrintApplication(ICollection<int> ints, string ID)
{
Contracts_Create contract = new Contracts_Create();
ModelApplication currentApplication = new ModelApplication();
currentApplication.contract = new ModelContract();
return File(contract.CreatePDF_PrintedApplication_English(currentApplication.contract.location, currentApplication.contract), "application/pdf");
}
Изменить: Это было отмечено как дубликат другого вопроса. Вопрос в том, можно ли использовать непоследовательные имена. Моя проблема в том, что я использую входные данные, которые не являются последовательными, но они все еще не работают. Я понимаю концепцию, я просто не могу понять, почему мой конкретный код не работает. Я потратил много времени на это и не могу найти ответ на свой конкретный код. Спасибо!