c# - 如何在 ASP.NET MVC 中应用评级

标签 c# asp.net-mvc

我正在尝试在 MVC 中实现星级评分,但发现它非常困难,因为互联网上的大多数评分都使用 jquery,其中当前评分值的查询字符串在 jquery 代码中。我希望能够对我网站上的每部电影进行评分,但无法将我的 movieID 传递给 MovieRating 操作。这是因为正在传递的查询字符串已被评级采用。我也尝试使用 FormCollection 来收集我的 movieID 但收到的是空值。我还想在每个用户登录网站时显示他们的评分。请提供任何帮助,我们将不胜感激。

public ActionResult MovieRating(int id, int rating, MovieRating MovieRating)
{
    MovieRating.Rating= rating;
    MovieRating.ProfileID = "duru";

    MovieRating.MovieID =id;
    //save change not yet implemented    
}

这是我认为的代码:这个 Url.RequestContext.RouteData.Values["id"] 帮助我获取当前 movieID 的查询字符串

@using (Html.BeginForm("MovieRating", "Movie", FormMethod.Post, new { id =          Url.RequestContext.RouteData.Values["id"] }))
{
    <p>
      <img src="../../Content/RatingImages/EmptyStar.png"  class="MovieRating"  alt="Star Rating" align="middle" id="1" />
      <img src="../../Content/RatingImages/EmptyStar.png" class="MovieRating" alt="Star Rating" align="middle" id="2" />
      <img src="../../Content/RatingImages/EmptyStar.png" class="MovieRating" alt="Star Rating" align="middle" id="3" />
      <img src="../../Content/RatingImages/EmptyStar.png" class="MovieRating" alt="Star Rating" align="middle" id="4" />
      <img src="../../Content/RatingImages/EmptyStar.png" class="MovieRating" alt="Star Rating" align="middle" id="5" />
   </p>
   <div id="result"></div>
}

这是 jquery 代码

/// <reference path="jquery-1.5.1-vsdoc.js" />
/// <reference path="jquery-ui-1.8.11.js" />
/*(document).(function(){*/
$(function () {
    $('.MovieRating').mouseover(function () {
        giveRating($(this), "FilledStar.png");
        $(this).css("cursor", "pointer");
    });

    $('.MovieRating').mouseout(function () {
        giveRating($(this), "EmptyStar.png");
    });

    $('.MovieRating').click(function () {
        $('.MovieRating').unbind("mouseout mouseover click");

        // call ajax methods to update database
        var url = "/Movie/MovieRating?rating=" + parseInt($(this).attr("id"));
        $.post(url, null, function (data) {
            $("#result").text(data);
        });
    });
});

function giveRating(img, image) {
    img.attr("src", "/Content/RatingImages/" + image)
        .prevAll('.MovieRating').attr("src", "/Content/RatingImages/" + image);
}

最佳答案

我假设当您构建将评级发布到您的操作的 jQuery 调用时,您能够指定应将评级发布到的 url。如果没有办法扩展 jquery 插件以允许其他参数,我会发布到路由 'Controller/MovieRating/@Model.MovieId' 然后允许 jQuery 插件发布任何查询字符串参数它需要。一旦您在 Controller 中收到此信息,id 将被填充,您可以继续为电影分配您的评级

注意:所提供的路由假设您使用的是 Razor 语法,并且由于您没有发布太多关于您的 View 或 Controller 的代码,您的 View 模型的电影 ID 为 MovieId,您显然必须更改它以适应您的需求

编辑 看到你的代码后,如果你改变这一行

var url = "/Movie/MovieRating?rating="+ parseInt($(this).attr("id"));

为此:

var url = "/Movie/MovieRating/@Url.RequestContext.RouteData.Values["id"]?rating="+ parseInt($(this).attr("id"));

它应该能让您朝着正确的方向前进。这将允许您的 MovieRating 操作接受它期望的 id 参数。

但是,我要问您的另一个问题是,您是否将 View 模型传递到您的页面?你为什么不在你的 View 模型上传递电影的 Id 而不是每次都从 RouteData 中获取它?只是好奇

关于c# - 如何在 ASP.NET MVC 中应用评级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9395398/

相关文章:

c# - Accord.Net 二项式概率质量函数结果与 Excel 结果不同

c# - 为什么我的代码抛出 String was not recognized as a valid DateTime 错误?

c# - RedirectToAction 错误?

asp.net - 使我的 Controller 数据库调用异步或不异步

c# - 使用属性路由时如何获取 Mvc 5 Controller 的 ActionDescriptor?

c# - 将 Samba 的 S-1-22-[12]-* SID 映射到名称中

c# - 用 TryParse() 和 out 变量短路可靠吗?

c# - 怎么理解这个Unity Coroutine呢?

c# - 带有一些其他参数的 Dropzone

asp.net-mvc - 临时 ASP.NET 文件在 Visual Studio(devex 组件)中构建项目时发生冲突