MVC5 HTML ActionLink引发CS1502

时间:2013-11-25 23:27:25

标签: asp.net-mvc entity-framework

我在MVC5解决方案中创建了一个非常简单的视图类。它使用Entity Framework并调用控制器类的一个操作。我想在我的主页上输出一个VIN号列表作为超链接。

视图类语法如下:

@{
ViewBag.Title = "Vehicle Inventory";
}
@model IEnumerable<TavernaMVC.Controllers.InventoryController>

<ul>
 @foreach (var item in Model)
 {
   <li><a href="@item.Details">@item</a></li>
 }

</ul>

错误如下:

 CS1502: The best overloaded method match for 
 'System.Tuple.Create<object,int>(object, int)' has some invalid arguments

如何纠正我的代码,以便在视图类中输出每个VIN的详细信息?或者,我如何简单地将所有VIN值作为超链接输出?

3 个答案:

答案 0 :(得分:2)

首先,您不应将控制器用作模型。你在使用什么型号的课程?既然你在谈论VIN,我猜它可以被称为Car

public class Car {
    public int VIN { get; set; }
    public string Details { get; set; }
}

在您的控制器中,您可以执行以下操作:

public ActionResult Index() {
    var cars = db.Cars.ToList();
    return View(cars);
}

然后,将您的视图定义为:

@model IEnumerable<TavernaMVC.Models.Car>
@{
    ViewBag.Title = "Vehicle Inventory";
}

<ul>
    @foreach (var item in Model)
    {
        <li><a href="@item.Details">@item.VIN</a></li>
    }
</ul>

答案 1 :(得分:0)

如果TavernaMVC.Controllers.InventoryController类看起来像:

,那么您的视图看起来是正确的
public class TavernaMVC.Controllers.InventoryController
{
   //VIN 
   public string VIN{get;set;}
   //Url to Details
   public URL Details{get;set;}
}

你用这个

<li><a href="@item.Details">@item.VIN</a></li>

作为li

答案 2 :(得分:0)

在第一行检查重命名的属性...

重命名属性并在Visual Studio中使用AutoRefactoring后,我没有更改CSHTM文件中的属性。