Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET MVC中应用评级_C#_Asp.net Mvc - Fatal编程技术网

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

C# 如何在ASP.NET MVC中应用评级,c#,asp.net-mvc,C#,Asp.net Mvc,我试图在MVC中实现明星评级,但发现这非常困难,因为互联网上的大多数评级都使用jquery,其中当前评级值的查询字符串位于jquery代码中。我希望能够对我网站上的每部电影进行评级,但无法将我的电影ID传递给电影制作。这是因为正在通过的查询字符串已通过评级。我还尝试使用FormCollection收集我的电影ID,但收到的是空值。我还想在每个用户登录网站时显示他们的评分。如果您有任何帮助,我们将不胜感激 public ActionResult MovieRating(int id, int ra

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

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.RoutedData.Values[id]帮助我获取当前电影id的查询字符串

@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插件发布它需要的任何查询字符串参数。一旦您在控制器中收到此消息,将填充id,您可以继续为电影分配分级

注意:提供的路由假设您使用的是razor语法,并且由于您没有发布太多关于视图或控制器的代码,您的viewmodel将电影Id设置为MovieId,因此您显然必须更改此设置以满足您的需要

编辑 看到代码后,如果您更改此行

var url=/Movie/MovieRating?rating=+parseInt$this.attrid

为此:

var url=/Movie/MovieRating/@url.RequestContext.RouteData.Values[id]?rating=+ parseInt$this.attrid

这会让你走上正确的方向。这将允许您的MovieRating操作接受它所期望的id参数


然而,我要问的另一个问题是,您是否将viewmodel传递到页面?为什么不在viewmodel上传递电影的Id,而不是每次从RoutedData中获取它?只是好奇

我假设,当您构建将评级发布到操作的jQuery调用时,您能够指定评级应该发布到的url。如果无法扩展jquery插件以允许附加参数,我将发布到路径“Controller/MovieRating//Model.MovieId”,然后允许jquery插件发布它需要的任何查询字符串参数。一旦您在控制器中收到此消息,将填充id,您可以继续为电影分配分级

注意:提供的路由假设您使用的是razor语法,并且由于您没有发布太多关于视图或控制器的代码,您的viewmodel将电影Id设置为MovieId,因此您显然必须更改此设置以满足您的需要

编辑 看到代码后,如果您更改此行

var url=/Movie/MovieRating?rating=+parseInt$this.attrid

为此:

var url=/Movie/MovieRating/@url.RequestContext.RouteData.Values[id]?rating=+ parseInt$this.attrid

这会让你走上正确的方向。这将允许您的MovieRating操作接受它所期望的id参数


然而,我要问的另一个问题是,您是否将viewmodel传递到页面?为什么不在viewmodel上传递电影的Id,而不是每次从RoutedData中获取它?只是好奇

我根据你发布的代码更新了我的答案我根据你发布的代码更新了我的答案