【问题标题】:Get RadioButton Value KnockoutJs获取 RadioButton 值 KnockoutJs
【发布时间】:2017-04-06 18:11:51
【问题描述】:

我已经在我的视图中动态创建了单选按钮,并且我正在尝试将检查的值传递给我的控制器。当我的控制器被击中时,代理代码字符串为空,我不知道如何获取该值,以便将其发送到我的控制器。

编辑我的单选按钮是在 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>

【问题讨论】:

  • 不太了解 mvc 中 html 的 razor 语法,所以您介意分享一下渲染的 html 吗?
  • @gkb 我已经包含了渲染的 html
  • 你能把data_bind(下划线)换成data-bind(破折号)然后试试吗?
  • 在 MVC 控件中,您必须使用 data_bind。当我尝试使用数据绑定时,你会得到红色的曲线。

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


【解决方案1】:

我需要将数据发送回我的控制器,我发现最好的方法是将属性添加到我的视图模型中。

public string AgentCode {get; set;}

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

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

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 2018-08-05
    相关资源
    最近更新 更多