【问题标题】:Passing the selected Radio button value to Controller C# MVC将选定的单选按钮值传递给控制器​​ C# MVC
【发布时间】:2019-03-24 17:47:19
【问题描述】:

我有一个显示客户 ID、客户名称和单选按钮循环的表格。我正在尝试根据我的表格上给出的选项链接登录的用户。

电子邮件:test@gmail.com

客户 ID |客户名称 |选择用户

1234 |测试 1 |单选按钮(选中)

2345 |测试 2 |单选按钮

我想要的是,如果选中单选按钮(即 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>
}

【问题讨论】:

  • IsSelected 不是IsSeleted
  • @StephenMuecke 嘿,斯蒂芬,很好,但不幸的是,它没有用。我仍然是空的。
  • 假设方法是[HttpPost],它将正常工作
  • @StephenMuecke 我做了仔细检查,我的方法是 [HttpPost]

标签: asp.net-mvc razor radio-button


【解决方案1】:

您可以尝试创建一个既存储选定值又存储单选按钮项目的视图模型,而不是传递单个 string 参数。这是正确视图模型设置的示例:

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 属性中。

【讨论】:

  • 谢谢你,哲也!
  • 嗨 Tetsuya,每次我调用 RadioButtonFor 时,它都会给我一个错误“HtmlHelper 不包含 'RadioButtonFor' 的定义和最佳扩展方法重载”。对此不确定
猜你喜欢
  • 2019-07-06
  • 1970-01-01
  • 2017-11-30
  • 2021-08-16
  • 1970-01-01
  • 2014-04-08
  • 2014-03-26
  • 2020-09-02
  • 1970-01-01
相关资源
最近更新 更多