How to use generic syntax inside a Razor view file?

后端 未结 5 1623
遥遥无期
遥遥无期 2021-02-04 23:26

I was trying to use the following statement:

@Html.Test().Nand()

However, Razor is choking at the < before the ISQL.

Any

相关标签:
5条回答
  • 2021-02-04 23:32

    To use generic methods you need to escape the expression

    @(Html.Test<ISQL>().Nand())
    
    0 讨论(0)
  • 2021-02-04 23:36

    It's about the @ character, this example works before upgrade

    @{
        string @class = ViewBag.@class;
        IDictionary<string, object> htmlAttributes = new Dictionary<string, object>();
    }
    

    After upgrade, it must be separated into two blocks

    @{  string @class = ViewBag.@class; }
    @{  IDictionary<string, object> attrs = new Dictionary<string, object>(); }
    
    0 讨论(0)
  • 2021-02-04 23:37

    I just found this question when I was looking for this "same error" when upgrading mvc.

    I had :

    Does not work:

    @{ 
       ViewBag.Title = "Something " + @Model.Title;
       var something = (IEnumerable<SelectListItem>)ViewBag.Options;    
    }
    

    Apparently, the syntax went stricter, and as you are inside a @{} block, you should not add @ before Model.Title on the example. But the error on the code editor was pointing to the generic and it was getting me crazy.

    It works fine if there is no <> inside the code, but just removing the @ from Model.Title fix the issue.

    Works:

    @{ 
       ViewBag.Title = "Something " + Model.Title;
       var something = (IEnumerable<SelectListItem>)ViewBag.Options;    
    }
    

    Hope this helps to anyone

    0 讨论(0)
  • 2021-02-04 23:40

    I had a strange case when I had several assignments inside of one @{ ... } bock.

    @{
        // ... other assignments (without error)
        List<string> stringList = new List<string>()  // ERROR MESSAGE HERE
    }
    

    What ever I did, there were always errors, like this:

    Using the generic type 'List' requires one type arguments

    The solution: I put the assignment line to a second @{ ... } bock.

    @{
        // ... other assignments
    }
    @{
        List<string> stringList = new List<string>()  // WORKS
    }
    
    0 讨论(0)
  • 2021-02-04 23:55

    I appreciate that this 'answer' is somewhat late and the question has obviously been satisfactorily (and well) answered. However, for any future visitors to this page, if you're after a more complete reference guide there's the MS introduction to Razor syntax as well as Phil Haack's very useful Razor quick reference blog post.

    0 讨论(0)
提交回复
热议问题