Javascript 使用一个按钮ASP.NET MVC提交多个单选按钮值

Javascript 使用一个按钮ASP.NET MVC提交多个单选按钮值,javascript,c#,html,asp.net,asp.net-mvc,Javascript,C#,Html,Asp.net,Asp.net Mvc,我的页面上有三组单选按钮,我想用一个按钮提交它们的每个值 <table> <tr> <td> @Html.RadioButton("rating1", "yes", true) Yes @Html.RadioButton("rating1", "no", false) No @Html.RadioButton("rating1", "maybe", false) Maybe </td>

我的页面上有三组单选按钮,我想用一个按钮提交它们的每个值

<table>
    <tr>
     <td>
      @Html.RadioButton("rating1", "yes", true) Yes
      @Html.RadioButton("rating1", "no", false) No
      @Html.RadioButton("rating1", "maybe", false) Maybe
     </td>
    </tr>
<tr>
     <td>
      @Html.RadioButton("rating2", "yes", true) Yes
      @Html.RadioButton("rating2", "no", false) No
      @Html.RadioButton("rating2", "maybe", false) Maybe
     </td>
    </tr>
<tr>
     <td>
      @Html.RadioButton("rating3", "yes", true) Yes
      @Html.RadioButton("rating3", "no", false) No
      @Html.RadioButton("rating3", "maybe", false) Maybe
     </td>
    </tr>
</table>

@单选按钮(“评级1”,“是”,真)是
@单选按钮(“评级1”,“否”,错误)否
@RadioButton(“rating1”,“maybe”,false)maybe
@单选按钮(“评级2”,“是”,真)是
@单选按钮(“评级2”,“否”,错误)否
@RadioButton(“rating2”,“maybe”,false)maybe
@单选按钮(“评级3”,“是”,真)是
@单选按钮(“评级3”,“否”,错误)否
@RadioButton(“rating3”,“maybe”,false)maybe
我想向控制器操作发送一个字典作为参数,以便检索每个评级的值

控制器如下所示:

public ActionResult Rate(Guid uniqueId, Dictionary<Guid, string> ratings)
        {
            [...]
        }
public ActionResult比率(Guid唯一ID、字典评级)
{
[...]
}
我试过:

<input type="submit" value="Send Ratings" onclick="@Url.Action("Rate", "Controller", new {new Dictionary<string,string> {{"rating1", "yes"}, {"rating2", "no"}, {"rating3", "maybe"}})"></input>

但是像这样把字典作为常规值传递是不允许的

如何使用一个按钮/提交将所有3个单选按钮[名称、值]对发送到操作?此外,这三个群体是以相同的形式还是以不同的形式存在

我愿意使用javascript,但更喜欢使用Razor HTML助手


谢谢

您可以使用FormCollection在帖子上设置单选按钮值

您只需编写var variable=f[“rating1”]在您的post方法中,并在post方法中获取您选择的单选按钮值

   public ActionResult Rate(Guid uniqueId,FormCollection f)

       {

           var variable1 = f["rating1"]; 

           var variable2 = f["rating2"]; 

           var variable3 = f["rating3"]; 

           [...]

       }
型号

public class ExampleViewModel
{
    public ExampleViewModel()
    {
        Answers = new Dictionary<string, string>();
        Questions = new List<KeyValuePair<string, List<string>>>();
    }

    public Dictionary<string, string> Answers { get; set; }
    public List<KeyValuePair<string, List<string>>> Questions { get; set; }
    public ExampleViewModel Add(string key, string[] value)
    {
        Questions.Add(new KeyValuePair<string, List<string>>(key, value.ToList()));
        return this;
    }
}
查看

    @model ExampleViewModel
    @using (Html.BeginForm())
    {
        <table class="table table-bordered table-striped">
            @for(int i=0;i<Model.Questions.Count;i++)
            {
                var question = Model.Questions[i];
                <tr>
                    <td>
                        @foreach (var answer in question.Value)
                        {
                            <input type="hidden" name="Model.Answers[@question.Key].Key" value="@question.Key" />
                            <input type="hidden" name="Model.Answers.Index" value="@question.Key" />
                            @Html.RadioButton("Model.Answers[" + question.Key+"].Value", answer, false) @answer
                        }
                    </td>
                </tr>
            }
            <tr>
                <td>
                    <input type="submit" class="btn btn-primary" value="Submit" />
                </td>
            </tr>
        </table>
    }
@model ExampleViewModel
@使用(Html.BeginForm())
{

@对于(int i=0;i首先,Razor代码在发送到视图之前会在服务器上进行解析,因此
@Url.Action
会在任何客户端更改之前呈现一个值。其次,您不能将字典传递给GET方法(至少不是这样,它需要类似于中)。但实际上,您为什么不只是发布表单并绑定到模型呢?
    @model ExampleViewModel
    @using (Html.BeginForm())
    {
        <table class="table table-bordered table-striped">
            @for(int i=0;i<Model.Questions.Count;i++)
            {
                var question = Model.Questions[i];
                <tr>
                    <td>
                        @foreach (var answer in question.Value)
                        {
                            <input type="hidden" name="Model.Answers[@question.Key].Key" value="@question.Key" />
                            <input type="hidden" name="Model.Answers.Index" value="@question.Key" />
                            @Html.RadioButton("Model.Answers[" + question.Key+"].Value", answer, false) @answer
                        }
                    </td>
                </tr>
            }
            <tr>
                <td>
                    <input type="submit" class="btn btn-primary" value="Submit" />
                </td>
            </tr>
        </table>
    }