将所选单选按钮值传递给操作链接

时间:2013-12-13 08:11:02

标签: asp.net-mvc asp.net-mvc-4 razor html-helper

我对MVC很新,我必须以表格格式显示来自数据库的值,并在每个显示器前面显示单选按钮,以便用户可以选择他们想要选择的任何选项,我需要发布控制器的那个选项。以下是我正在做的事情。

 @model IList<CertificateModel>
@{
    ViewBag.Title = "RefreshCertificates";
}
<h2>
    RefreshCertificates</h2>
@using (Html.BeginForm())
{
    <table cellpadding="1" style="text-align: center; border: 5 px">
        <tr>
            <td>
                &nbsp;
            </td>
            <td>
                Name
            </td>
            <td>
                Issuer
            </td>
        </tr>


        @for (var i = 0; i <= Model.Count - 1; i++) {
              @Html.HiddenFor(x=>x[i].Subject)
        <tr>
            <td>
                @Html.RadioButtonFor(x => x[i].Subject, true, new { @name = "optionsRadios", @id = "rbtrue" })

            </td>
            <td>
                @Html.DisplayFor(x => x[i].Subject)
            </td>
            <td>
                @Html.DisplayFor(x => x[i].Issuer)
            </td>
        </tr>
        }
    </table>
}
<table>
    <tbody>
        <tr>
            <td>

                @Html.ActionLink("STANDARD", "SelectCertOk", "LogIn", new { Type = "STANDARD",  }, new { @class = "button" })
            </td>
            <td>
            </td>
        </tr>
    </tbody>
</table>

以下是我的模特

public class CertificateModel
    {
        public string Subject
        {
            get { return cert.Subject; }
        }

        public string Issuer
        {
            get { return cert.Issuer; }
        }
   public bool validCert  { get; set; }
}

将数据放在屏幕代码上的我的控制器如下:

public ActionResult RefreshCertificates()
    {
       certificates = new List<CertificateModel>();
       // some code here to fill up the list
      return View(certificates );
     }

页面上显示的输出是这样的(RB是一个单选按钮)

      Subject       Issuer
  RB     Coffee        Test1
  RB     Tea              Test2

从当前数据库中,屏幕上只输出两个。用户只能选择一个单选按钮,然后点击actionLink按钮。 我的问题是,现在两个按钮都被选中,我只想选择一个单选按钮,而且,我还希望将该单选按钮的值发布到控制器。 例如,如果用户选择了Coffee和Test1单选按钮,那么我想传递

@Html.ActionLink("STANDARD", "SelectCertOk", "LogIn", new { Type = "STANDARD",  }, new { @class = "button" })

键入= STANDARD和SubjectIssue Coffee,Test1到控制器。我的控制器签名就像这样

 public void SelectCertOk(string Type, string SubjectIssue)
        {

    }

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

你做的是正确的事,但不幸的是我们不能像id一样覆盖name属性。 更新您的视图以包含具有相同“名称”的多个单选按钮。

@Html.RadioButton('Subject', x[i].Subject)

<a href="javascript:SelectCertOk();">STANDARD</a>
<script>
  function SelectCertOk(){
     var subject = $("input:radio[name=Subject]")
     $.post("@Url.Content("~/ControllerName/SelectCertOk")", { SubjectIssue : subject}, function (data) {}
     }); 
  }
</script>

但它无法解决你的目的。

所以我更喜欢使用javascript来检查/取消选中radiobuttons。