Передача выбранного значения переключателя в контроллер C # MVC - PullRequest
0 голосов
/ 19 октября 2018

У меня есть таблица, в которой отображается идентификатор клиента, имя клиента и циклические переключатели.Я пытаюсь связать пользователя, вошедшего в систему, основываясь на параметре, указанном в моей таблице.

Электронная почта: test@gmail.com

CustID |CustName |SelectUser

1234 |Тест 1 |кнопка радио (проверено)

2345 |Тест 2 |radiobutton

То, что я хочу, это если радио-кнопка проверена (custId: 1234), я хочу получить этот CustID.

Вот мой код:

Контроллер

public ActionResult AddCustomerLinkToDB(string IsSeleted)
{
   string selectedCustomer = IsSeleted;
   return View();
}

cshtml

@using (Html.BeginForm("AddCustomerLinkToDB", "Admin", FormMethod.Post))
{
    <table class="table table-bordered table-hover">
        <tr>
            <th>Customer ID</th>
            <th>Customer Name</th>
            <th>Select this user</th>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.Id</td>
                <td>@item.Name</td>
                <td>@Html.RadioButton("IsSelected", new { id = item.Id })</td>
            </tr>
        }
    </table>
}

1 Ответ

0 голосов
/ 20 октября 2018

Вместо передачи одного аргумента string вы можете попытаться создать модель представления, в которой будут храниться как выбранные значения, так и элементы переключателей.Вот пример правильной настройки viewmodel:

public class ViewModel
{
    // since the CustID is numeric, I prefer using 'int' property
    public int IsSelected { get; set; }

    public List<Customer> Customers { get; set; }

    // other properties
}

Страница вида должна выглядеть следующим образом, используя RadioButtonFor для привязки со свойством IsSelected:

@model ViewModel

@using (Html.BeginForm("AddCustomerLinkToDB", "Admin", FormMethod.Post))
{
    <table class="table table-bordered table-hover">
        <tr>
            <th>Customer ID</th>
            <th>Customer Name</th>
            <th>Select this user</th>
        </tr>
        @foreach (var item in Model.Customers)
        {
            <tr>
                <td>@item.Id</td>
                <td>@item.Name</td>
                <td>@Html.RadioButtonFor(model => model.IsSelected, item.Id, new { id = item.Id })</td>
            </tr>
        }
    </table>
}

Наконец,параметр контроллера должен быть настроен так, чтобы он принимал класс viewmodel следующим образом:

[HttpPost]
public ActionResult AddCustomerLinkToDB(ViewModel model)
{
    int selectedCustomer = model.IsSelected;
    // other stuff

    return View();
}

При использовании этой настройки выбранное значение будет сохранено в свойстве IsSelected при отправке формы.

...