当我将星形评级为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"> </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();
}
答案 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放置明星的文字/图标。
希望这有帮助,
阿尔贝托