2011-10-18 53 views
1

我使用jQuery raty插件來評級客戶。我有以下的jQuery代碼創建RATY對象:如何在ASP.NET MVC(剃鬚刀)中設置模型的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> 
      }    
     } 

這工作得很好,但在我看來太dumy解決方案(如過多的冗餘生成的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">&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具有這樣的特性,其開始可以設置選擇分的默認數量。它看起來像:

$('.customerRating').raty({   

          start: @Model.RatingID   

     }); 

以這種方式,我可以設置模型中默認的恆星數。我可以爲具體的ID做到這一點,但我怎麼可以設置這個值起始屬性自IEnumerable ...

@foreach (var item in Model.CustomerRating) 

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

我希望這是可以理解的。我將不勝感激任何幫助或其他提示或想法如何解決這個問題。

謝謝。

回答

0

嗯,沒有太大的RAZOR whizzz但不可能的,你只是:

for (int i = 0; i < @item.RatingID; i++) 
{ 
$("#bRate_" + '@item.CustomerID' + i).attr("src", "/Content/jQueryRaty/img/star-on.png"); 
} 

而是直接從RATY設置它是ofcourse更聰明,像你說的:/


不會在工作?

@{ 
    foreach (var item in Model.CustomerRating) 
      { 
      <text> 
       $('.customerRating').raty({ start: @Model.RatingID }); 
      </text> 
      }    
     } 
+0

謝謝你的回答。你的方法似乎很好。它減少了源代碼(通過替換,如果是)。但從生成的代碼角度來看,它是一樣的。 – zosim

+0

Ur正確。在raty中再次調用它有什麼問題? :P –

+0

嗯,看來,這對我來說可能是可以接受的。可能不存在更好的解決方案。我將永遠需要爲每個評級客戶創建raty對象併爲其設置評分。謝謝。 – zosim