Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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# MVC内联代码未在html标记中呈现_C#_Asp.net Mvc 3_Razor_Asp.net Mvc 4 - Fatal编程技术网

C# MVC内联代码未在html标记中呈现

C# MVC内联代码未在html标记中呈现,c#,asp.net-mvc-3,razor,asp.net-mvc-4,C#,Asp.net Mvc 3,Razor,Asp.net Mvc 4,所以,我已经使用MVC 3、Razor 1和Web.Helpers 1一年多了,但最近我又转向了MVC 4、Razor 2和Web.Helpers 2。我注意到任何在HTML属性中包含内联代码或web助手的视图都会发生一些奇怪的事情。即,代码在属性外部呈现 示例1:(MVC3、Razor 1、Web.Helpers 1) 将呈现为: <li class="even"> 或 示例2:(MVC3、Razor 1、Web.Helpers 1) 将呈现为: <img

所以,我已经使用MVC 3、Razor 1和Web.Helpers 1一年多了,但最近我又转向了MVC 4、Razor 2和Web.Helpers 2。我注意到任何在HTML属性中包含内联代码或web助手的视图都会发生一些奇怪的事情。即,代码在属性外部呈现

示例1:(MVC3、Razor 1、Web.Helpers 1)

  • 将呈现为:

    <li class="even">
    
  • 示例2:(MVC3、Razor 1、Web.Helpers 1)

    
    
    将呈现为:

    <img alt="2473W" title="2473W" src="/Content/_gallery/homes/photos/17411WOODFALLSLANE_S.jpg" border="0" style="padding:2px 2px 2px 2px;" />
    
    
    
    当我将站点更新为MVC4、Razor2、Web.Helpers 2时,我看到了以下内容

    示例1呈现为:

    <lieven class="">
    
    <img alt="2473W" title="2473W" /Content/_gallery/homes/photos/17411WOODFALLSLANE_S.jpg src="" border="0" style="padding:2px 2px 2px 2px;" />
    
    
    

    
    
    示例2呈现为:

    <lieven class="">
    
    <img alt="2473W" title="2473W" /Content/_gallery/homes/photos/17411WOODFALLSLANE_S.jpg src="" border="0" style="padding:2px 2px 2px 2px;" />
    
    
    
    我已经能够通过将HTML.RenderAction更改为HTML.Action来解决这个问题,所以我的代码现在是:(MVC4、Razor2、Web.Helpers 2)

    例1:

    string rowClass = (0 == RowCount % 2) ? "even" : "odd";
    
                        <li class="@rowClass">
    
    string rowClass=(0==行计数%2)?“偶数”:“奇数”;
    
  • 例2:

    <img src="@Html.Action("GetHomeImage", "FindYourHome", new { street = (string)item.AddrStreet, photo = (string)item.ELEV1, type = (string)item.RecordType, plan = (string)item.PlanNumber, elevation = (string)item.PlanElevation, defaultImage = (string)item.HomeImage })" border="0" style="padding:2px 2px 2px 2px;" alt="@item.PlanNumber" title="@item.PlanNumber" />
    
    
    
    这两个例子都正确,但我不确定为什么


    我非常感谢您提供的任何信息,这些信息将帮助我在我们的网站中找到任何其他实例,并使我在更新到MVC 4、Razor 2和Web时感觉好多了。Helpers 2。

    现在无法测试它,但请尝试以下方法:

    <li class="@(0 == RowCount % 2 ? "even" : "odd")">
    

  • 请注意括号而不是大括号。

    现在无法测试它,但请尝试以下操作:

    <li class="@(0 == RowCount % 2 ? "even" : "odd")">
    
  • 请注意括号而不是大括号。

    在回答新的
    @(…)
    语法的“为什么”时,请注意MVC4包括对“条件属性”的支持

    请参阅此处的更多信息:

    在回答新的
    @(…)
    语法的“为什么”时,请注意MVC4包括对“条件属性”的支持



    查看此处的更多信息:

    您是否尝试过使用
  • ?只是一个注释:MVC原则是远离内联的程序性BS。我建议重新考虑你的代码,让它更面向对象。此外,你可以在CSS中做偶数/奇数的事情。你不必硬编码,不幸的是,我们25%的用户使用IE8或更少,所以我们还不能利用第n个孩子。我同意内联代码违背了MVC的本意,但这在我们的网站上是不会发生的:),主要是出于遗留目的。使用class=“@{0==RowCount%2?…}的第一个建议返回一个错误代码:“不能用作语句”您是否尝试过只使用
  • ?请注意:MVC的原则是远离内联的、过程性的BS。我建议重新考虑你的代码,让它更面向对象。此外,你可以在CSS中做偶数/奇数的事情。你不必硬编码,不幸的是,我们25%的用户使用IE8或更少,所以我们还不能利用第n个孩子。我同意内联代码违背了MVC的本意,但这在我们的网站上是不会发生的:),主要是出于遗留目的。使用class=“@{0==RowCount%2?…}的第一个建议返回一个错误代码:“不能用作语句“好吧……这奏效了!但是为什么呢?我不喜欢这个答案…因为我不想在我的站点中找到属性标记中的所有@{}代码并将它们更改为@()。MVC的引用有什么变化吗?注意:这对示例1有效,但对示例2无效。我同意将HTML.RenderAction更改为HTML.Action,因为我相信它在流中的渲染效果更好,我已经做了更改。我只想找出原因,HTML.RenderAction的行为有所不同。例如,我只想使用@HTML.RenderAction(…),而不是将其包含在代码块中。使用@HTML.RenderAction(…)会返回错误“无法隐式将类型“void”返回到“object”没有将其包含在代码块中。在Html.RenderAction和Html.Action之间混淆了,RenderAction将结果直接显示到响应中,而Html.Action返回字符串。好的……这很有效!但是为什么呢?我不喜欢这个答案…因为我不想在我的站点中找到属性标记中的所有@{}代码并将它们更改为@()。MVC的引用有什么变化吗?注意:这对示例1有效,但对示例2无效。我同意将HTML.RenderAction更改为HTML.Action,因为我相信它在流中的渲染效果更好,我已经做了更改。我只想找出原因,HTML.RenderAction的行为有所不同。例如,我只想使用@HTML.RenderAction(…),而不是将其包含在代码块中。使用@HTML.RenderAction(…)会返回错误“无法隐式将类型“void”返回到“object”没有将其包含在代码块中。在Html.RenderAction和Html.Action之间混淆,RenderAction将结果直接显示到响应中,而Html.Action返回字符串。因此,主要问题似乎是MVC4中的新条件属性功能返回布尔值或其他非字符串类型的数据,这可能会对您的页面造成不利影响。页面似乎在处理HTML.RenderAction返回的字符串和操作本身的void类型时都存在问题?看起来有点像vodoo魔术,但幸运的是,我在整个网站上只有几十个需要更改的条件属性。因此,主要问题是MVC4中新的条件属性功能返回布尔值或其他非字符串类型的数据,这可能会对页面造成不利影响。页面似乎在处理HTML.RenderAction返回的字符串和操作本身的void类型时都存在问题?看起来有点像伏都教的魔法,但幸运的是
    <li class="@(0 == RowCount % 2 ? "even" : "odd")">