我无法在 C# 中使用 Jquery 和 Ajax 从控制器向 Razor 视图发送值
Posted
技术标签:
【中文标题】我无法在 C# 中使用 Jquery 和 Ajax 从控制器向 Razor 视图发送值【英文标题】:I can't send a value to a Razor View from controller using Jquery and Ajax in C# 【发布时间】:2019-12-01 02:39:44 【问题描述】:我要做的是从控制器返回一个对象,并在剃刀视图中一一读取其所有值。该值从视图到控制器进展顺利;问题是当我尝试从控制器返回它以查看时。我正在使用 ASP.NET、Razor Views (html5)、AJAX 和 JQuery。如果您需要更多相关信息,请告诉我。
这些是我在视图中的三个控件:
<div class="form-group">
@Html.LabelFor(model => model.IdProducto, "IdProducto", htmlAttributes: new @class = "control-label col-md-2" )
<div class="col-md-10">
@Html.DropDownList("IdProducto", null, htmlAttributes: new @class = "form-control" )
@Html.ValidationMessageFor(model => model.IdProducto, "", new @class = "text-danger" )
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.CantidadProducto, htmlAttributes: new @class = "control-label col-md-2" )
<div class="col-md-10">
@Html.EditorFor(model => model.CantidadProducto, new htmlAttributes = new @class = "form-control" )
@Html.ValidationMessageFor(model => model.CantidadProducto, "", new @class = "text-danger" )
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.ValorTotal, htmlAttributes: new @class = "control-label col-md-2" )
<div class="col-md-10">
@Html.EditorFor(model => model.ValorTotal, new htmlAttributes = new @class = "form-control" )
@Html.ValidationMessageFor(model => model.ValorTotal, "", new @class = "text-danger" )
</div>
</div>
这是我的 JQuery 语句:
<script type="text/javascript">
$(function ()
$('#IdProducto, #CantidadProducto').on('change', function ()
var IdProducto = $('#IdProducto').val();
var CantidadProducto = $('#CantidadProducto').val();
if (CantidadProducto.length > 0)
$.getJSON('@Url.Action("GetProductValue")', idProducto: IdProducto , function (data)
$.each(data, function (i, item)
$('#ValorTotal').val(( Number(CantidadProducto) * Number(item.Precio) ));
);
);
else
$('#ValorTotal').val(0);
;
);
);
</script>
而且,这是我的控制器代码:
[HttpPost]
public JsonResult GetProductValue(string idProducto)
Producto producto = db.Producto.Find(Convert.ToInt32(idProducto));
if (producto == null)
producto = new Producto();
return Json(producto);
【问题讨论】:
您是否在 $.getJSON 中跟踪了 data 响应? 我可以用哪种方法代替 $.getJSON ? 【参考方案1】:$.getJSON
使用 http GET
请求获取数据,而在您的控制器中,您的操作方法是 POST
您可以将其更改为HttpGet
或使用$.post
方法
【讨论】:
以上是关于我无法在 C# 中使用 Jquery 和 Ajax 从控制器向 Razor 视图发送值的主要内容,如果未能解决你的问题,请参考以下文章
将数据传递到处理程序的 Jquery ajax 不起作用(Asp.net、C#、Jquery)
将c#集合序列化为视图中的jquery数组以通过ajax方法传递给控制器
如何使用 AJAX (jquery) 将嵌套的对象数组传递和接收到 c# WebMethod 中?