简体   繁体   中英

mixing css with c# mvc in razor

How can I simplify this code using razor engine (c# mvc)..Is there any way to mix c# and css inside razor engine?

Actually i am not getting correct answer while trying this

 @model FoodViewModel

@foreach (FoodView item in Model.Foodviews)
{         
 @if (item.vote == 1)
       {
        <input type="radio" name="example" class="rating" value="1"  checked="checked" />
        <input type="radio" name="example" class="rating" value="2" />
        <input type="radio" name="example" class="rating" value="3" />
        <input type="radio" name="example" class="rating" value="4" />
        <input type="radio" name="example" class="rating" value="5" />
       } 
        else if(item.vote == 2)
       {
        <input type="radio" name="example" class="rating" value="1" />
        <input type="radio" name="example" class="rating" value="2"  checked="checked"  />
        <input type="radio" name="example" class="rating" value="3" />
        <input type="radio" name="example" class="rating" value="4" />
        <input type="radio" name="example" class="rating" value="5" />
       }
       else if (@item.vote == 3)
       {
        <input type="radio" name="example" class="rating" value="1" />
        <input type="radio" name="example" class="rating" value="2" />
        <input type="radio" name="example" class="rating" value="3" checked="checked" />
        <input type="radio" name="example" class="rating" value="4" />
        <input type="radio" name="example" class="rating" value="5" />
       } 

       else
       {
        <input type="radio" name="example" class="rating" value="1" />
        <input type="radio" name="example" class="rating" value="2" />
        <input type="radio" name="example" class="rating" value="3" />
        <input type="radio" name="example" class="rating" value="4" />
        <input type="radio" name="example" class="rating" value="5"  />
       } 
}

Why not DRY up your code by trying something like:

for (int i = 1; i <= 5; i++)
{
     <input type="radio" name="example" class="rating" value="@i" 
     @if(i == item.vote)
     {
       checked="checked"
     }
     />
}

Presumably you want some kind of label / value however?

You could try a simple loop?

@for (var i = 1; i < 6; i++) {
    if (i == item.vote) {
        <input type="radio" name="example" class="rating" value="@i" checked>
    } else {
        <input type="radio" name="example" class="rating" value="@i">
    }
}

Or, even better, with a html helper;

@for (var i = 1; i < 6; i++) {
     @Html.RadioButton("example", i, item.vote == i, new { @class = "rating" })
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM