Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我无法使用Razor引擎在视图中创建ActionLink_C#_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 我无法使用Razor引擎在视图中创建ActionLink

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文件,并且具有正确的

当我尝试在索引视图中实现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中的名称空间

<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)转换为字符串
  • 另外,欢迎来到stackoverflow!只是一个善意的提醒,我们中的一些人(包括我自己)有时会在评论中提供我们的建议,而不是写一个答案,如果它可以用一两句话完成的话


    我必须承认,这不是一个好习惯,但当你在寻找答案的时候,阅读一些人们留下的评论总是很有帮助的。在这种情况下,@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>