Как установить свойство jQuery из модели в ASP.NET MVC (бритва) - PullRequest
1 голос
/ 18 октября 2011

Я использую плагин jQuery raty для оценки клиентов. У меня есть следующий код jQuery для создания raty объектов:

$('.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 для одного элемента:

<span id="bRate_123" class="customerRating">
<img title="bad" alt="1" src="/Content/jQueryRaty/img/star-on.png" id="bRate_123-1">&nbsp;
<img title="poor" alt="2" src="/Content/jQueryRaty/img/star-on.png" id="bRate_123-2">&nbsp;
<img title="regular" alt="3" src="/Content/jQueryRaty/img/star-on.png" id="bRate_123-3">&nbsp;
<img title="good" alt="4" src="/Content/jQueryRaty/img/star-on.png" id="bRate_123-4">&nbsp;
<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 имеет свойство start, которое может устанавливать количество выбранных звезд по умолчанию. Похоже:

  $('.customerRating').raty({           

                            start: @Model.RatingID          

        });

Таким образом, я могу установить количество звезд по умолчанию в модели. Я могу сделать это для конкретного идентификатора, но как я могу установить это начальное свойство для значений из IEnumerable ...

   @foreach (var item in Model.CustomerRating)

         ?????? set start property .....

Надеюсь, это понятно. Я буду признателен за любую помощь или другие советы или идеи, как решить эту проблему.

спасибо.

1 Ответ

0 голосов
/ 18 октября 2011

Хм, не так уж и сильно, как бритва, но вы не могли бы просто сделать:

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> 
            }               
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...