将Ajax调用中的值传递给Index方法
我有一个要求,我必须从“HomeController”的Index方法的Ajax调用返回一个id,我可以通过Ajax将id传递给控制器,如下所示: 更新1: 产品等级: Ajax调用: 在上面的方法中,我将id设置为会话变量,并将此变量值作为参数传递给Index方法。问题是会话变量在第一次尝试时不起作用,直到我刷新页面。但在调试时,我可以看到值,每次都会被删除。我想,这样做是不对的。查看包和会话似乎没有帮助。我的要求是根据单个产品的产品id计算它们的评级,并且应该使用相同的Ajax调用返回。在索引方法中,我执行以下操作:将Ajax调用中的值传递给Index方法,ajax,entity-framework,asp.net-mvc-5,controller,Ajax,Entity Framework,Asp.net Mvc 5,Controller,我有一个要求,我必须从“HomeController”的Index方法的Ajax调用返回一个id,我可以通过Ajax将id传递给控制器,如下所示: 更新1: 产品等级: Ajax调用: 在上面的方法中,我将id设置为会话变量,并将此变量值作为参数传递给Index方法。问题是会话变量在第一次尝试时不起作用,直到我刷新页面。但在调试时,我可以看到值,每次都会被删除。我想,这样做是不对的。查看包和会话似乎没有帮助。我的要求是根据单个产品的产品id计算它们的评级,并且应该使用相同的Ajax调用返回。在索
CountAll = db.Ratings.Where(c => c.ProductId == id).Count() //id - I am trying to pass from Ajax call
我希望,有更好的方法来做到这一点,目前正在努力解决这一问题
注:谢谢@Luqman和@Stephen Muecke@Stephen Muecke谢谢你的电话。为了演示,我打了两个Ajax电话,并为延迟更新帖子表示歉意
以下是当前的工作示例:
为什么使用会话获取存储id。请使用模型或Tempdata存储该id。Tempdata是会话!这是毫无意义的,那会有什么帮助?第二次呼叫中不存在该模型-它必须存储在会话中!但是OP的问题没有任何意义,不管怎样,当只有一个电话是空的时候,打两个单独的电话needed@AT-2017年:请编辑这个答案,你是通过什么方式得到解决方案的。你到底为什么要打两个单独的ajax电话?请参阅我的最新帖子@Stephen Muecke。谢谢
<script>
$(document).ready(function (response) {
if (response) {
$.ajax({
url: '@Url.Action("AddRating")',
data: { id: '@item.ProductId', rating: rate },
type: 'POST',
success: function (data) {
$('.@item.ProductId').html(data);
}
});
}
}).fail(function () {
alert("Failed to get total ratings!");
});
</script>
[HttpPost]
public JsonResult AddRating(int id, double rating)
{
var con = new ProductRating
{
RatingCount = db.Ratings.Where(c => c.ProductId == id).Count()
};
if (con.RatingCount >= 300)
{
return Json("Rating limit already exits", JsonRequestBehavior.AllowGet);
}
else
{
Ratings aRatings = new Ratings();
aRatings.ProductId = id;
aRatings.UserRating = rating;
db.Ratings.Add(aRatings);
db.SaveChanges();
return Json(con.RatingCount, JsonRequestBehavior.AllowGet);
}
}
CountAll = db.Ratings.Where(c => c.ProductId == id).Count() //id - I am trying to pass from Ajax call