我对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>
</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)
{
}
任何帮助将不胜感激。
答案 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。