2016-11-22 39 views
0

我在我的視圖中動態創建單選按鈕,我試圖將選中的值傳遞給我的控制器。當我的控制器被擊中Agentcode字符串是空的,我不知道如何獲取值,以便我可以將其發送到我的控制器。獲取RadioButton價值KnockoutJs

編輯我的單選按鈕生成在一個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"}) } 

我擊倒視圖模型看起來是這樣的。

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> 
+0

對mvc中html的剃刀語法不太瞭解,所以你會介意共享呈現的html嗎? – gkb

+0

@gkb我已經包含了呈現的html –

+0

你可以用'data-bind'(短劃線)替換'data_bind'(下劃線),然後嘗試嗎? – gkb

回答

0

我需要將數據發回給我的控制器和發佈我發現的最好的方法是添加屬性到我的viewmodel。

public string AgentCode {get; set;} 

然後給單選按鈕一個Id,這樣當控制器被擊中時,MVC會正確映射屬性。我決定不去淘汰賽,而是將表格發回控制器。它最終在我的按鈕上看起來像這樣。

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