gpt4 book ai didi

jquery - 将 json 提交到 MVC3 操作

转载 作者:行者123 更新时间:2023-12-03 23:00:58 24 4
gpt4 key购买 nike

我有一个使用 Knockout.js 创建的表单。当用户按下提交按钮时,我将 View 模型转换回模型并尝试提交到服务器。我尝试过:

ko.utils.postJson(location.href, ko.toJSON(viewModel));

但是该对象在到达服务器时是空白的。我切换到这段代码:

$.ajax({
url: location.href,
type: "POST",
data: ko.toJSON(viewModel),
datatype: "json",
contentType: "application/json charset=utf-8",
success: function (data) { alert("success"); },
error: function (data) { alert("error"); }
});

它将数据发送到服务器,其中包含正确的数据。

但我想要的是提交数据,以便我的 Controller 可以重定向到正确的 View 。有什么建议吗?

最佳答案

Steve Sanderson 有一个较旧的示例,演示如何将提交的 JSON 数据正确绑定(bind)到 Controller 操作中: http://blog.stevensanderson.com/2010/07/12/editing-a-variable-length-list-knockout-style/

其要点是他创建了一个名为“FromJson”的属性,如下所示:

public class FromJsonAttribute : CustomModelBinderAttribute
{
private readonly static JavaScriptSerializer serializer = new JavaScriptSerializer();

public override IModelBinder GetBinder()
{
return new JsonModelBinder();
}

private class JsonModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var stringified = controllerContext.HttpContext.Request[bindingContext.ModelName];
if (string.IsNullOrEmpty(stringified))
return null;
return serializer.Deserialize(stringified, bindingContext.ModelType);
}
}
}

然后,操作如下:

    [HttpPost]
public ActionResult Index([FromJson] IEnumerable<GiftModel> gifts)

现在,您可以使用 ko.utils.postJson 提交数据并以适当的 View 进行响应。

关于jquery - 将 json 提交到 MVC3 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com