我的模特 -
public class Model
{
public String SelectedValue;
}
行动方法 -
public ActionResult Index()
{
Model model = new Model();
model.SelectedValue = "a";
return View("Index1", model);
}
查看 -
<input type="radio" name="Group1" value="a" data-bind="attr: { checked: SelectedValue }" />
<input type="radio" name="Group1" value="b" data-bind="attr: { checked: SelectedValue }" />
<input type="radio" name="Group1" value="c" data-bind="attr: { checked: SelectedValue }" />
<script type="text/javascript">
var data = @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model));
BindData();
</script>
我的javascript -
function BindData() {
viewModelData = ko.mapping.fromJS(data);
ko.applyBindings(viewModelData);
}
当渲染我的视图时,它会渲染所有三个单选按钮,并选择值为“c”的按钮。但是从动作方法我选择值为“a”的单选按钮。为什么会这样?
任何人都可以帮助我了解我的代码是否有任何问题,或者敲除如何在内部处理单选按钮选择。谢谢!
答案 0 :(得分:2)
使用checked
binding代替直接为此方案创建的attr
绑定:
选中的绑定会将可检查的表单控件(即复选框(
<input type='checkbox'>
)或单选按钮(<input type='radio'>
)与视图模型上的属性相关联。
所以在你的情况下你需要写:
<input type="radio" name="Group1" value="a" data-bind="checked: SelectedValue" />
<input type="radio" name="Group1" value="b" data-bind="checked: SelectedValue" />
<input type="radio" name="Group1" value="c" data-bind="checked: SelectedValue" />
演示JSFiddle。