我是 KockoutJS 的新手,所以我可能会遗漏一些简单的东西。
我有一个表单中的文本区域:
<form method="POST" data-bind="submit: save" id="theForm">
<textarea name="Text" rows="10" cols="100" data-bind="value: userText" ></textarea>
<input type="submit" value="Save" />
</form>
我有以下淘汰赛代码:
<script type="text/javascript">
var MyViewModel = {
userText: ko.observable('@Model.UserText'),
save: function () {
ko.utils.postJson('@Url.Action("modify")',{userText : this.userText});
}
}
</script>
@Model.UserText
文字字符串在哪里。我的 ASP.NET MVC 控制器方法modify
定义如下:
[Authorize]
[HttpPost]
public ActionResult Modify(string userText)
{
...
}
我的问题是postJSON 方法将转义字符串发布到我的控制器方法,我不明白为什么。我可以在提琴手中看到字符串作为userText=%22some+text%22
如果我使用普通的 jQuery ajax 而不是像这样使用 postJson:
$.ajax(
{
url: '@Url.Action("modify")',
contentType: 'application/json',
type: 'POST',
data: ko.toJSON({userText: ko.toJS(this.userText)}),
success: function(result) {
ko.mapping.updateFromJS(this, result);
}
});
然后 JSON 对象{'userText': 'some text'}
被传递给控制器方法,MVC 模型绑定器正确解析它并给我一个未转义的字符串。
我可以让 postJson 传递与 jQuery ajax 方法传递的相同 JSON 对象吗?