获取RadioButton Value KnockoutJs

时间:2016-11-22 22:08:14

标签: c# asp.net-mvc knockout.js

我在视图中动态创建了单选按钮,我试图将选中的值传递给我的控制器。当我的控制器被击中时,Agentcode字符串为空,我无法弄清楚如何获取值,以便我可以将其发送到我的控制器。

编辑我的单选按钮是在foreach中生成的,我认为可能导致难以达到该值。

这是MVC控件呈现的html看起来像

<div>
<input name="XXXXX" type="radio" value="{ data_bind = checkedValue: $data,checked: $root.AgentCode }">
 </div> 

  foreach (var code in Model.ActiveAgentCodes)
    {
        <div>
            @Html.RadioButton(code.AgentCode, new { data_bind="checkedValue: $data,checked: $root.AgentCode"})

     @Html.RadioButton(code.AgentCode, new {data_bind="checkedValue: $data,checked: $root.AgentCode"}) }

我的淘汰赛ViewModel看起来像这样。

 function ViewModel(){
    var self = this;
    self.AgentCode = ko.observable();
    };

    var viewModel = new ViewModel();
    ko.applyBindings(viewModel);

我控制器中的post方法如下所示

   [HttpPost]
        public ActionResult GetAgentCodeForHomeController(string AgentCode)
        {
            return RedirectToAction("Home", "Home");
        }

在我看来,我发布的是这样使用

@using (Html.BeginForm("GetAgentCodeForHomeController", "ChangeAccount"))
{
        @Html.RadioButton(code.AgentCode, new {data_bind="checkedValue: $data,checked: $root.AgentCode"})
   @Html.HiddenFor(model => model.AgentCode, new { data_bind = "text:AgentCode" })
}
<button type="submit">OK</button>

1 个答案:

答案 0 :(得分:0)

我需要将数据发送回我的控制器,我找到的最佳方法是向我的viewmodel添加属性。

public string AgentCode {get; set;}

然后给单选按钮一个Id,以便在控制器被击中时MVC正确映射属性。我决定不用淘汰赛,而是将表格发回给控制器。它最终在我的按钮上看起来像这样。

@Html.RadioButton("AgentCode", code.AgentCode, new {id = code.AgentCode})