显示图像= Int结果

时间:2014-01-02 13:47:21

标签: asp.net-mvc

我正在使用MVC5,我试图在int中显示每个数字1个图像,例如:

如果评分为5,则显示5颗星。

我找到了一种方法来做到这一点,但这是一个非常糟糕的工作,我更愿意理解如何在这个问题上改进foreach循环。

CODE:

public class RestaurantReview
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
    public string Country { get; set; }
    public int Rating { get; set; }    
}

=============================================== ==========

public ActionResult Index()
{
    var model = 
        from r in _reviews 
        orderby r.Name descending 
        select r;

    return View(model);
}

=============================================== ==========

数据源示例:

static List<OdeToFood.Models.RestaurantReview> _reviews = new List<RestaurantReview>
{
    new RestaurantReview {
        Id = 1,
        Name = "Cinnamon Club",
        City = "London",
        Country = "UK",
        Rating = 10,
    },

2 个答案:

答案 0 :(得分:0)

例如,你真的用CSS做到这一点。你的HTML可能看起来像这样:

foreach(var item in model.items){
   <span id="star@(item.rating)">&nbsp;</span>
   <span>@mitem.name</span>
}

我不同意这种硬编码解决方案,但你可以这样做:

var model = 
        from r in _reviews 
        orderby r.Name descending 
        select new {   name = r.name, image = "star" + r.rating, field3 = r.blah, field4 = r.blahblah }

但是,如下所述,您更改图像,必须更改代码,如果更改图像位置,则还必须更改代码。如果您想更改评级。你必须改变我们的代码。

另一个解决方案是客户端:http://wbotelhos.com/raty

或类似的东西。 https://www.google.co.uk/search?q=jquery+ratings&oq=jquery+ratings&aqs=chrome..69i57j0l5.3043j0j7&sourceid=chrome&espv=210&es_sm=122&ie=UTF-8

答案 1 :(得分:0)

一个简单的for循环可以做到这一点:

for (i=0; i < item.Rating; i++) {
<img src="star">
}