asp.net 将 json 发布到控制器
Posted
技术标签:
【中文标题】asp.net 将 json 发布到控制器【英文标题】:asp.net post json to controller 【发布时间】:2016-05-28 11:00:55 【问题描述】:当我单击“保存”按钮时,没有任何反应,并且 SaveProducts 控制器中的断点没有响应。为什么?我知道它需要实现 jsondeseralize 因为 product 应该为 null。
HomeController.cs
public class HomeController : Controller
//
// GET: /Home/
public ActionResult Index()
return View();
public ActionResult SaveProducts(ProductModel product)
return View("Index");
索引.cshtml
@
ViewBag.Title = "Index";
<script src="~/Scripts/knockout-2.2.0.js"></script>
<h2>Index</h2>
<div data-bind="with: currentProduct">
<p>Name: <input type="text" data-bind="value: productName" /></p>
</div>
<input type="button" value="Save" data-bind="click: saveProduct" />
<script>
function ProductViewModel()
var self = this;
self.currentProduct = ko.observable(new Product("P1"));
self.saveProduct = function ()
var productModel = ko.toJS(self.currentProduct);
ko.utils.postJson("/Home/SaveProducts", product: productModel );
function Product(name)
var self = this;
self.productName = ko.observable(name);
ko.observable(new ProductViewModel());
</script>
ProductModel.cs
public class ProductModel
public string productName get; set;
【问题讨论】:
接受的答案看起来不错,但只是对未来的提示;当您遇到此类问题时,请使用浏览器开发工具 (F12) 并查看网络选项卡和控制台。如果您单击按钮并没有看到 POST 发生,那么您肯定知道问题出在您的客户端脚本上。 【参考方案1】:我在您的代码中看不到您激活绑定的位置,我认为在这一部分中您的意思是激活它而不是创建可观察对象。
ko.observable(new ProductViewModel());
你应该把它改成:
ko.applyBindings(new ProductViewModel());
【讨论】:
以上是关于asp.net 将 json 发布到控制器的主要内容,如果未能解决你的问题,请参考以下文章
无法在 asp.net 核心中使用 ajax 将 json 发布到控制器
如何将带有 JSON、jQuery 的复杂对象数组发布到 ASP.NET MVC 控制器?
将 JSON 从视图发送到控制器 ASP.NET MVC 会给出空值
将json发送到控制器时,ASP.NET mvc 4控制器参数始终为空,为啥?