当我点击评级控件中的星号时如何传递值?

时间:2014-02-21 09:26:51

标签: javascript html5 asp.net-mvc-4 asp.net-routing

当我将星形评级为5时,id值应传递为10.它将值传递为1.如果我将星形评定为4,则相同的值(1)将传递给Controller。这是对所有额定值重复,
我删除了以前的所有代码,并添加了我更新的代码。请检查一下 这是我的观看代码:

<form method="post" id="ratethecommand" action="@Url.Action("rated", "Rating")">
<table width="100%" cellspacing="10"> <tr>
  <td valign="top" width="">
   <table width="100%">
    <tr>
     <td width="50%">

     <a href="@Url.Action("rated/1", "Rating")"><input class="star {split:2}" type="radio" name="test-4-rating-3" /></a>
      <a href="@Url.Action("rated/2", "Rating")"><input class="star {split:2}" type="radio" name="test-4-rating-3" /></a>
       <a href="@Url.Action("rated/3", "Rating")"><input class="star {split:2}" type="radio" name="test-4-rating-3"/></a>
        <a href="@Url.Action("rated/4", "Rating")"><input class="star {split:2}" type="radio" name="test-4-rating-3" /></a>
         <a href="@Url.Action("rated/5", "Rating")"><input class="star {split:2}" type="radio" name="test-4-rating-3" /></a>
          <a href="@Url.Action("rated/6", "Rating")"><input class="star {split:2}" type="radio" name="test-4-rating-3" /></a>
           <a href="@Url.Action("rated/7", "Rating")"><input class="star {split:2}" type="radio" name="test-4-rating-3" /></a>
            <a href="@Url.Action("rated/8", "Rating")"><input class="star {split:2}" type="radio" name="test-4-rating-3" /></a>
             <a href="@Url.Action("rated/9", "Rating")"><input class="star {split:2}" type="radio" name="test-4-rating-3" /></a>
              <a href="@Url.Action("rated/10", "Rating")"><input class="star {split:2}" type="radio" name="test-4-rating-3" value="5.0"/></a>

<input type="text" name="rating"/>
    </td>

  <td valign="top" width="5">&nbsp;</td>  <td valign="top" width="160">
   <u>Test results</u>:<br/><br/>
   <div class="test Smaller">

    <span style="color:#FF0000">Results will be displayed here</span>
   </div>
  </td>
 </tr>
</table>

这是我的控制器代码:

public ActionResult rated(int id)
        {
            double ratedvalue = Convert.ToDouble(id*0.5);
            Tbl_Rating tb = new Tbl_Rating();
            var value = new Tbl_Rating
            {
                Rating = ratedvalue,
                TaskId = 1,
                UserId = 1,
                DReportID = 1,
                CreatedBy = 1,
                CreatedOn = DateTime.Now,
                ModifiedBy = 1,
                ModifiedOn = DateTime.Now
            };

            db.Tbl_Rating.Add(value);
            db.SaveChanges();

            return View();
        }

1 个答案:

答案 0 :(得分:2)

当问题不同时,这是第一个解决方案。

使用jQuery是微不足道的:当用户点击你的收音机/明星时,你提交表格。

$(".star").click(function() {
   //your logic on star click
   $("#ratethecommand").submit();
});

您还可以更改实际的filosofy,执行简单的重定向而不是对表单进行总结:在这种情况下,您应该将实际的无线电输入(星形)转换为指向控制器/操作的A元素,并将值作为参数(如果是整数则更好):

<a href="@Url.Action("rated/3", "Rating")">icon of your star</a>

如果你有默认路由,那么你可以在你的行动中从id中检索费率(顺便说一句:大写它!)。

最后一个想法:您也可以选择异步方式,再次使用jQuery post和get方法,它将很容易实现!

最终解决方案(回答上一个问题编辑)

从A元素内容中删除INPUT元素。 Insted放置明星的文字/图标。

希望这有帮助,

阿尔贝托