2016-11-22 3 views
0

Ich habe Radio Buttons in meiner Sicht dynamisch erstellt und ich versuche, den überprüften Wert an meinen Controller zu übergeben. Wenn mein Controller gedrückt wird, ist die Agentcode-Zeichenfolge leer und ich kann nicht herausfinden, wie der Wert abgerufen werden soll, damit ich ihn an meinen Controller senden kann.Get RadioButton Wert KnockoutJs

EDIT meine Radio-Tasten sind in einer foreach generiert, die ich denke, kann die Schwierigkeit beim Erreichen des Wertes verursachen. Diese

ist, was die html von der MVC-Steuerelement gerendert sieht aus wie

<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"}) } 

meine Knockout Ansichtsmodell sieht wie folgt aus.

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

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

und die post-Methode in meinem Controller sieht aus wie dies

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

Meine Ansicht i wie

@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

ich weiß nicht viel über die Rasierersyntax für HTML in mvc, also würde es Ihnen etwas ausmachen, das HTML zu teilen, das gerendert wird? – gkb

+0

@gkb Ich habe die gerenderten HTML enthalten –

+0

können Sie 'data_bind' (Unterstrich) durch' data-bind' ersetzen (Strich) und dann versuchen? – gkb

Antwort

0

so mit bin Entsendung ich benötigten Daten zurück zu meinem Controller senden und Der beste Weg, den ich gefunden habe, war, meinem Viewmodel Eigenschaften hinzuzufügen.

Geben Sie den Optionsschaltflächen eine ID, damit MVC die Eigenschaften korrekt abbildet, wenn der Controller gefunden wird. Ich entschied mich, nicht mit Knockout zu gehen und stattdessen das Formular zurück an den Controller zu senden. Es endete so auf meinen Knöpfen.

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