在实际应用中我们将各个文本框用ko进行了绑定之后,此时用户填好各个文本框的值之后,就需要提交表单了,以前,我们获取各个文本框的值用的是Jquery的val()方法,例如,我们要获取用户名的值,则这样获取:var UserName=$("#UserName").val()
,但用到了knockout对各个文本框进行了绑定之后,则可以这样传值:
前端代码:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<head>
<script src="~/Scripts/Knockout.js"></script>
<script src="~/Scripts/knockout-map.js"></script>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.json.min.js"></script>
<script>
$(function () {
var ViewMode={};
ViewMode =function () {
this.UserName = ko.observable("张三");
this.Age = ko.observable("21");
};
ko.applyBindings(ViewMode);
var Model = new ViewMode();
var temp = ko.mapping.toJS(Model);// ko.mapping.toJS:将ko对象转换为JS对象
var Json = $.toJSON(temp);//将JS对象序列化为JS字符串
$("#btn1").click(function ()
{
$.ajax(
{
url: "/Test/Create",
data: { "param": Json },
ansyc: true,
type: "post",
datatype: "json",
success: function (data)
{
}
});
});
});
</script>
</head>
<body>
姓名:<input type="text" data-bind="value:UserName"/><br />
年龄:<input type="text" data-bind="value:Age">
<input type="button" value="确定" id="btn1" />
</body>
此处需要注意的是,如果发现浏览器报$.toJSON is not a function这个错误,而你又引用了jquery.json,则很可能是Jquery的$冲突,则可以这样:
后端代码:
public ActionResult Create(string param)
{
//此处对Json字符串参数param序列化对象,然后在处理你需要的逻辑
return View();
}
关于Jquery的冲突,大家可以看我这边文章:https://blog.csdn.net/qq_33265875/article/details/80654261