J'ai une exigence où je dois renvoyer un id de l'appel Ajax à la méthode d'index du `HomeController 'et je peux passer l'id au contrôleur avec Ajax comme suit:Transmettre une valeur de l'appel Ajax à l'index Méthode
Mise à jour 1:
ProductRating classe:
public class ProductRating
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public double UserRating { get; set; }
public double? RatingCount { get; set; } //Messed up with this earlier and when Luqman told me about the model, it reminded to add this property and the rest is done
public double? Total { get; set; }
}
Ajax Appel:
<script>
$(document).ready(function (response) {
if (response) {
$.ajax({
url: '@Url.Action("AddRating")',
data: { id: '@item.ProductId', rating: rate },
type: 'POST',
success: function (data) {
$('[email protected]').html(data);
}
});
}
}).fail(function() {
alert("Failed to get total ratings!");
});
</script>
Controller:
[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);
}
}
Voir dans la méthode ci-dessus, je l'ai fixé l'id dans une variable de session et passerait cette valeur variable dans la méthode index en tant que paramètre. Le problème est que la variable de session ne fonctionne pas dans la première tentative jusqu'à ce que je rafraichisse la page. Mais pendant le débogage, je peux voir les valeurs et à chaque fois, ça s'efface. Je suppose que ce n'est pas la bonne façon de le faire. ViewBag
et Session
ne semblent pas utiles. Mon exigence est de compter les notes des produits individuels par rapport à leur identifiant de produit et cela devrait être retourné avec le même appel Ajax. Dans la méthode Index, je fais ce qui suit:
CountAll = db.Ratings.Where(c => c.ProductId == id).Count() //id - I am trying to pass from Ajax call
je l'espère, il y aurait une meilleure façon de le faire et actuellement aux prises avec elle.
Remarque: Merci @Luqman et @Stephen Muecke. @Stephen Muecke Merci pour l'appel. Je faisais deux appels Ajax à des fins de démonstration et des excuses pour le retard pour mettre à jour le poste.
Voici l'exemple de travail en ce moment:
Pourquoi diable faites-vous 2 appels ajax séparés? –
S'il vous plaît voir mon post mis à jour @Stephen Muecke. Merci, –