Asp.net mvc ASP.NET MVC如何将radiobutton选定值从视图传递到控制器

Asp.net mvc ASP.NET MVC如何将radiobutton选定值从视图传递到控制器,asp.net-mvc,Asp.net Mvc,我有一组动态生成的单选按钮。我只想将所选值传递到我的控制器。我尝试了几件事,但都不管用。我只能获取表单为不同目的设置的隐藏字段值。 这些不起作用–它们不会返回任何信息: var YourRadioButton2 = Request.Form["wc"]; string selectedTechnology = form["wc"]; 是否有办法将所选单选按钮传送到控制器。这些radiobutton值是动态生成的 景色 <%--wired choices--%> &

我有一组动态生成的单选按钮。我只想将所选值传递到我的控制器。我尝试了几件事,但都不管用。我只能获取表单为不同目的设置的隐藏字段值。 这些不起作用–它们不会返回任何信息:

var YourRadioButton2 = Request.Form["wc"];
string selectedTechnology = form["wc"];
是否有办法将所选单选按钮传送到控制器。这些radiobutton值是动态生成的

景色

<%--wired choices--%>
         <tr > Wired Choices </tr>
        <% for (var i = 0; i < subform.wiredchoices.Count; i++) %>
        <%{ %> 
            <tr>  

                <td> <input type="radio" name="wc" value="<%:    subform.wiredchoices.ElementAt(i).WiredChoiceItem %>" > </td>
                <td><%:    subform.wiredchoices.ElementAt(i).WiredChoiceItem %> </td>
控制器

if (rcpt.Form.Is("VoIP"))
            {
                 Response.Write("<br />" + "wc " + wc);

                 List<String> listValues = new List<String>();
                 foreach (string key in Request.Form.AllKeys)
                 {                    
                         listValues.Add(Request.Form[key]);
                         Response.Write("<br />" + "first values  " + Request.Form[key]);
                 }

                 // Loop through every checkbox
                 foreach (var key2 in form.AllKeys)
                 {
                             Response.Write("<br />" + "second values  " + key2);
                 }


                //See Radiobutton selections
                var YourRadioButton = Request.Form["wc"];
                Response.Write("<br />" + "YourRadioButton " + YourRadioButton);
                string selectedTechnology = form["wc"];
                Response.Write("<br />" + "YourRadioButton " + selectedTechnology);

                var YourRadioButton2 = Request.Form["wlc"];
                Response.Write("<br />" + "YourRadioButton " + YourRadioButton2);
                string selectedTechnology2 = form["wlc"];
                Response.Write("<br />" + "YourRadioButton " + selectedTechnology2);

                Response.Write("<br />" + "VoIP Hire ");
                String wiredChoice = "test"; //assign value from radio button here
                String wiredLessChoice = "test"; //assign value from radio button here

                // Stor e submitting page to return to
                ViewData["ReturnUrl"] = fields.formType;



                </tr>
            <%} %>

你的代码让我想起了以前使用web表单的日子。啊!!谢天谢地!。我们现在有了ASP.NETMVC,我们可以在MVC中以一种干净的方式完成这项工作

让我们开始为视图创建视图模型

public class Technology
{
    public int Id { set; get; }
    public string Name { set; get; }
}

public class CreateUserViewModel
{   
    [Required]
    public int? SelectedTechnology { set; get; }   

    public List<Technology> Technologies { set; get; }

    // Add other properties as needed by your view
    public string UserName { set; get; }
}
现在在razor视图中,它是我们的CreateUserViewModel类的强类型

@model ReplaceYourNamespaceHere.CreateUserViewModel
@using (Html.BeginForm())
{
    @Html.ValidationSummary()

   <h4>Select a technology</h4>
    foreach (var item in Model.Technologies)
    {
       <div> @Html.RadioButtonFor(s => s.SelectedTechnology, item.Id) @item.Name</div>
    }
    <input type="submit"/>
}
相信我,这就是:

如果要在“创建”或“编辑”视图上预选一个Radio N按钮,可以将SelectedTechnology属性值设置为要选择的技术的Id

 var vm = new CreateUserViewModel();
 vm.Technologies = GetTechnologyList();

 vm.SelectedTechnology = 3 ; //replace with a non-hard coded value 

 return View(vm);

你的代码让我想起了以前使用web表单的日子。啊!!谢天谢地!。我们现在有了ASP.NETMVC,我们可以在MVC中以一种干净的方式完成这项工作

让我们开始为视图创建视图模型

public class Technology
{
    public int Id { set; get; }
    public string Name { set; get; }
}

public class CreateUserViewModel
{   
    [Required]
    public int? SelectedTechnology { set; get; }   

    public List<Technology> Technologies { set; get; }

    // Add other properties as needed by your view
    public string UserName { set; get; }
}
现在在razor视图中,它是我们的CreateUserViewModel类的强类型

@model ReplaceYourNamespaceHere.CreateUserViewModel
@using (Html.BeginForm())
{
    @Html.ValidationSummary()

   <h4>Select a technology</h4>
    foreach (var item in Model.Technologies)
    {
       <div> @Html.RadioButtonFor(s => s.SelectedTechnology, item.Id) @item.Name</div>
    }
    <input type="submit"/>
}
相信我,这就是:

如果要在“创建”或“编辑”视图上预选一个Radio N按钮,可以将SelectedTechnology属性值设置为要选择的技术的Id

 var vm = new CreateUserViewModel();
 vm.Technologies = GetTechnologyList();

 vm.SelectedTechnology = 3 ; //replace with a non-hard coded value 

 return View(vm);

你需要将单选按钮放在一个带有按钮的表单中,当按钮被触发时,单选按钮的值应该发送给控制器,否则我认为Ajax也是一个很好的使用方法。但是,你需要在表单中有一个单选按钮,当按钮被触发时,单选按钮的值应该被发送到控制器,否则我认为Ajax也是一个很好的使用方法。然后你把价值贴到Ajax上,从Ajax贴到controller上。嗨,谢谢你的指导。这看起来很有希望。在开始实现之前,我必须询问您在razor中编码的视图是否在aspx中仍然有效?因为我的项目很大,是用aspx而不是razor完成的。你能提供相同的aspx语法吗?很棒的解决方案,为我完美地修复了它!我总是告诉自己,如果模型设置正确,一切都会像融化的巧克力河一样流动!谢谢Shyju!嗨,谢谢你的指导。这看起来很有希望。在开始实现之前,我必须询问您在razor中编码的视图是否在aspx中仍然有效?因为我的项目很大,是用aspx而不是razor完成的。你能提供相同的aspx语法吗?很棒的解决方案,为我完美地修复了它!我总是告诉自己,如果模型设置正确,一切都会像融化的巧克力河一样流动!谢谢Shyju!