我在视图中动态创建了单选按钮,我试图将选中的值传递给我的控制器。当我的控制器被击中时,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>
答案 0 :(得分:0)
我需要将数据发送回我的控制器,我找到的最佳方法是向我的viewmodel添加属性。
public string AgentCode {get; set;}
然后给单选按钮一个Id,以便在控制器被击中时MVC正确映射属性。我决定不用淘汰赛,而是将表格发回给控制器。它最终在我的按钮上看起来像这样。
@Html.RadioButton("AgentCode", code.AgentCode, new {id = code.AgentCode})