C# 我无法使用Razor引擎在视图中创建ActionLink
当我尝试在索引视图中实现Html.ActionLink时,Intellisense抛出此错误: “System.Web.Mvc.HtmlHelper>”不包含“ActionLink”的定义和“System.Web.Mvc.Html.LinkExtensions”的最佳扩展方法重载。“ActionLink(System.Web.Mvc.HtmlHelper,string,string)”有一些无效参数” 我已验证是否有正确的引用,并检查了views文件夹中的web.config文件,并且具有正确的名称空间,下面是该web.config中的名称空间C# 我无法使用Razor引擎在视图中创建ActionLink,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,当我尝试在索引视图中实现Html.ActionLink时,Intellisense抛出此错误: “System.Web.Mvc.HtmlHelper>”不包含“ActionLink”的定义和“System.Web.Mvc.Html.LinkExtensions”的最佳扩展方法重载。“ActionLink(System.Web.Mvc.HtmlHelper,string,string)”有一些无效参数” 我已验证是否有正确的引用,并检查了views文件夹中的web.config文件,并且具有正确的
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
您可以将for-each循环更改为for循环,并像这样调用ActionLink
@for (var i = 0; i < Model.Count(); i++)
{
@Html.ActionLink("Link Text", "ActionMethod", "Controller", new { id = Model[i].Productid }, null)
}
对于您的问题,您只需将视图的一部分更改为:
<ul>
@foreach(Notes note in Model)
{
<li>
@Html.ActionLink(note.ProductID.ToString(), "Details", new { id = note.ID })
</li>
}
</ul>
@foreach(模型中的注释)
{
-
@ActionLink(note.ProductID.ToString(),“Details”,新的{id=note.id})
}
我改变的两件事是:
foreach
中删除了您的@型号的@
。您不需要在c代码中使用@符号
note.ProductID
更改为note.ProductID.ToString()
。请记住,在视图内部运行的c#代码仍然是c#,您必须将正确的类型传递给一个方法,在这种情况下,Html.ActionLink
的Link Text参数必须是字符串,然后您必须将note.ProductID
(一个int)转换为字符串我必须承认,这不是一个好习惯,但当你在寻找答案的时候,阅读一些人们留下的评论总是很有帮助的。在这种情况下,@urnotsam已经在comment中为您提供了一个解决方案,我只是将他的建议转化为答案,以便您能够实现它。
@Html.ActionLink(note.ProductID,“Details”,new{id=note.id})
应该更改,以便将note.ProductID
替换为字符串ActionLink
将字符串作为其第一个参数,并且注意。ProductID
是一个int。同样,在foreach循环中,从模型
前面删除@
,如果要使用ProductID作为链接文本,只需将“链接文本”替换为模型[i]。ProductID.ToString()。这个答案可能也会对您有所帮助,当然您可以在foreach中使用ActionLink。PO的问题正如@Josh所提到的,链接文本的类型必须是string
,在本例中是note.ProductID
是一个int,必须转换为string。@tweray我的错误,我知道有时候每个人都会有问题。谢谢tweray,还有其他帮助过我的人。我能让它工作!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc.Html;
namespace Madison_TestApp.Models
{
[Table("ProductNotes")]
public class Notes
{
public int ID { get; set; }
public int ProductID { get; set; }
public string NoteText { get; set; }
public DateTime CreateDate { get; set; }
public bool Archived { get; set; }
}
}
@for (var i = 0; i < Model.Count(); i++)
{
@Html.ActionLink("Link Text", "ActionMethod", "Controller", new { id = Model[i].Productid }, null)
}
@Html.ActionLink("Action Link", "ActionURL", "Hello", new { id = @Notes.ProductId }, null)
<ul>
@foreach(Notes note in Model)
{
<li>
@Html.ActionLink(note.ProductID.ToString(), "Details", new { id = note.ID })
</li>
}
</ul>