2011-10-18 17 views
1

評価顧客のためにjQuery ratyプラグインを使用しています。私はratyオブジェクトを作成するためのjQueryのコードを次ています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への既存の評価を設定したいと思っています。

私の現在のソリューションは次のようになります。これは正常に動作しますが、それはあまりにもDUMYソリューション私には思える

@{ 
    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">&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   

     }); 

このようにして、モデルから星のデフォルト数を設定できます。私はそれが理解できることを望む...

@foreach (var item in Model.CustomerRating) 

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

を私は具体的なIDのためにこれを行うことができますが、どのように私はIEnumerableをから値については、このスタートプロパティを設定することができます。私は、この問題を解決するための助けやヒントやアイデアを感謝します。

ありがとうございました。しかしcouldntのwhizzz RAZORの

答えて

0

うーんあまりないはあなただけです:あなたが言ったようしかしratyから直接設定すると、ofcourseのよりスマートである

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

:/


わけではありません、これを作業?

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

回答ありがとうございます。あなたのアプローチはうまくいくようです。ソースコードを減らす(ifをforに置き換える)。しかし、生成されたコードの観点からは同じです。 – zosim

+0

右。再びratyの中でそれを呼び出す問題は何ですか? :P –

+0

ええと、これは私には受け入れられるかもしれません。おそらくもっと良い解決策は存在しないでしょう。私は常に評価された各顧客のために濁ったオブジェクトを作成し、その評価を設定する必要があります。ありがとう。 – zosim

関連する問題