我正在使用jQuery raty插件来评级客户。我有以下用于创建raty对象的jQuery代码:
$('.customerRating').raty({
path: '/Content/jQueryRaty/img/',
click: function (score, evt) {
var id = this.attr("ID");
$('input[name="' + id + '"]').val(score);
}
});
Html结构如下(使用剃刀):
@{
foreach (var customer in (IEnumerable<BL.Model.Customer>)ViewData["Customers"])
{
var id = "bRate_" + customer.ID;
@Html.Hidden(id);
<div id="leftcolumn"><span>@customer.Name</span></div>
<div id="rightcolumn"><span class="customerRating" id="@id"></span</div>
<br/>
}
}
这是创建新评级的解决方案。我的问题是如何为编辑评级做出解决方案。我的意思是我想将现有的评级从模型设置为html。
我目前的解决方案是:
@{
foreach (var item in Model.CustomerRating)
{
<text>
if (@item.RatingID >= 1)
{
$("#bRate_" + '@item.CustomerID' + "-1").attr("src", "/Content/jQueryRaty/img/star-on.png");
}
if (@item.RatingID >= 2)
{
$("#bRate_" + '@item.CustomerID' + "-2").attr("src", "/Content/jQueryRaty/img/star-on.png");
}
if (@item.RatingID >= 3)
{
$("#bRate_" + '@item.CustomerID' + "-3").attr("src", "/Content/jQueryRaty/img/star-on.png");
}
if (@item.RatingID >= 4)
{
$("#bRate_" + '@item.CustomerID' + "-4").attr("src", "/Content/jQueryRaty/img/star-on.png");
}
if (@item.RatingID >= 5)
{
$("#bRate_" + '@item.CustomerID' + "-5").attr("src", "/Content/jQueryRaty/img/star-on.png");
}
</text>
}
}
这个工作正常,但在我看来太愚蠢的解决方案(例如,冗余生成的javascript代码太多)。
为一个元素生成的jQuery raty代码是:
<span id="bRate_123" class="customerRating">
<img title="bad" alt="1" src="/Content/jQueryRaty/img/star-on.png" id="bRate_123-1">
<img title="poor" alt="2" src="/Content/jQueryRaty/img/star-on.png" id="bRate_123-2">
<img title="regular" alt="3" src="/Content/jQueryRaty/img/star-on.png" id="bRate_123-3">
<img title="good" alt="4" src="/Content/jQueryRaty/img/star-on.png" id="bRate_123-4">
<img title="gorgeous" alt="5" src="/Content/jQueryRaty/img/star-off.png" id="bRate_123-5">
<input type="hidden" id="bRate_123-score" name="score" value="4">
</span>
Jquery raty具有属性开始,可以设置默认的选定星数。它看起来像:
$('.customerRating').raty({
start: @Model.RatingID
});
通过这种方式,我可以设置模型中的默认星数。我可以针对具体ID执行此操作,但是如何为IEnumerable中的值设置此start属性...
@foreach (var item in Model.CustomerRating)
?????? set start property .....
我希望这是可以理解的。我会感谢任何帮助或其他提示或想法如何解决这个问题。
感谢。
答案 0 :(得分:0)
嗯,不是很多RAZOR高手,但你不能这样做:
for (int i = 0; i < @item.RatingID; i++)
{
$("#bRate_" + '@item.CustomerID' + i).attr("src", "/Content/jQueryRaty/img/star-on.png");
}
但直接从raty设置它是更聪明的,就像你说的那样:/
这不会起作用吗?
@{
foreach (var item in Model.CustomerRating)
{
<text>
$('.customerRating').raty({ start: @Model.RatingID });
</text>
}
}