mvc中razor的一个bug

  具体东西就不多说了,所有编译,代码都是木有问题的。

  结果预览页面的时候竟然告诉我编译错误,尼玛这不科学啊。

  来看看错误页面

看着问题大概应该是缺少} ,或者多了个} 倒置的编译错误才对,但是编译生成完全没有问题啊,没办法,既然报这个问题,那肯定是最终合并生成的代码文件存在bug

那到底是哪里出的问题呢,没办法,硬着头皮查吧。

1.显示试着调试运行了一下页面,发现后台完全没问题。return view() 后,就出现了黄页。 那问题应该就是在html页面中了,那就来看看html页面中有些什么吧。

一般的html,即便是错了也不会影响编译才对,更何况使用vs的自动对齐,是可以对齐代码的,一眼看去,应该是没有问题的。那估么这问题就应该在开头了。先来看看

页面的部分代码吧

@using Junph.Entities.EShop

@{
    ViewBag.Title = "结算中心";

    var contactList = (IList<CRM_UserContact>) @ViewBag.ContactList;
    CRM_UserContact defaultContact = null;
    if (contactList != null)
    {
        defaultContact = contactList[0];
    }
}

<header>
    <div class="top">
        <div class="backicon"><a href="javascript:history.back()" target="_self"></a></div>
        <div class="titleFont">@ViewBag.Title</div>
        <div class="shopicon"><a href="@Url.Action("Index","Cart")" target="_self"></a></div>
    </div>
</header>

  这是html页面的开头的一部分代码。后面的html就没有贴出了,没什么意义了。

要说是}花括号的问题,那就只有一种可能了, 其中花括号的嵌套可能出现了问题。那到底是什么问题呢。先尝试去掉判断的代码试试吧。

靠,果然没有问题了,页面至少是显示出来了。那问题肯定就在这里了。

razor语法印象中这么写应该是没问题的吧。于是乎在确认了下,语法确实没有问题啊。

http://blog.csdn.net/pasic/article/details/7072340

那就很奇怪了,难道是bug?,于是乎换了中写法,将判断逻辑单独写在了一个代码块中(其实可以直接用三元表达式?:避免这个问题,这里主要是为了看看究竟)

@{
    if (contactList != null)
    {
        defaultContact = contactList[0];
    }
}

  再预览页面,没有问题。呵呵,我只能说坑啊,倒霉碰上了。

mvc中razor的一个bug

时间: 2024-11-06 03:43:20

mvc中razor的一个bug的相关文章

mvc中动态给一个Model类的属性设置验证

原文:mvc中动态给一个Model类的属性设置验证 在mvc中有自带的验证机制,比如如果某个字段的类型是数字或者日期,那么用户在输入汉字或者英文字符时,那么编译器会自动验证并提示用户格式不正确,不过这样的验证毕竟功能有限,那么就需要我们自己进行定制验证. 假设有Model类:class Dinners{ private string Title; private System.DateTime EventDate; private string Description; private stri

centos7(redhat7) 中localtime_r有一个BUG

centos7(redhat7) 中localtime_r有一个BUG.具体过程如下:step1 后台进程启动.step2 用户修改时区.step3 后进进程在使用localtime_r取时间时,不会更新时区.取得时间还是旧的时间.但是localtime使用新的时区计算时间.step4 此时再使用localtime调用后,localtime_r才使用新时区,计算时间.PS, centos6无此问题. BUG 2 centos7.5,进程使用gettimeofday (&tv,&tz);不会

从项目经理的角度看.net的MVC中Razor语法真的很垃圾.

我们知道,Razor语法中我们可以直接使用@if(){}等代码段,这使得.net程序员在写模版时更容易了. 对比如下: 语法名称 Razor 语法 Web Forms 等效语法 代码块(服务端) @{ int x = 123; string y = "test."; } <% int x = 123; string y = "test."; %> 表达式 encode:<p>@model.Message</p> no encode

MVC 中 Razor 无限分类的展示

在MVC的Razor视图展示无级分类的办法,在网上看了很多资料,大多搞得很高大上.可能本人水平有限,实在是不会用. 那我就用最简单爆力的办法来做. Model: public class NewsCategory { [Key] public int CategoryId { get; set; } public int ParentCategoryId { get; set; } [Required] [StringLength(50)] public string CategoryName

MVC中Razor视图基本语法(1)

Razor前面,必须要跟前面的有空隙,即空格,之后的必须要连贯,否则加小括号 1,在页面中输出单一变量时,只要在c#语句之前加上@符号即可. 例如 1 <p> 2 现在时刻: @DateTime.Now 3 </p> 2,如果要输出一段含有空白字或者字运算的结果时,必须要在前后加上一个小括号 1 <p> 2 会员名称: @(ViewBag.IsEnabled ?"启用" : "停用") 3 </p> 3, 若要在页面执

在练习使用nio时,无意中好像发现一个bug

就是我在看netty权威指南时,里面有个TimeServer的例子,然后按着上面的写了,在用到Nio时,我用客户端向服务端发送字符串"date"."d"."da"."dat"等字符串时,发送不成功.然而发送其它字符时会成功.然后用netty时也是如此 下面是我的例子,请高手解答 TimeServer: 1 package com.szc.nio; 2 3 import java.io.IOException; 4 5 /**

【Qt】无边框窗体中带有ActiveX组件时的一个BUG

无意中发现的一个BUG,Qt5.1.1正式版首先创建一个GUI工程,拖入一个QAxWidget控件(为了使ActiveX生效,需要在.pro文件中加入CONFIG += qaxcontainer)接着,为了让ActiveX有效,需要引入一个组件,我这里引入的是IE组件 [cpp] view plain copy MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->s

由一个bug引出java包装类型

工作中遇到过一个bug,用两个POJO的 Integer 字段 做 == 判断,明明"数值"相等结果返回 false.检查代码,调试,看源码搞了好久,才知道是Java包装类理解不够惹的祸. 为了弄清楚其中的本质,先上一段代码: 1 int a = 5; 2 Integer b = 5; 3 Integer c = Integer.valueOf(5); 4 Integer d = Integer.valueOf(5); 5 Integer e = new Integer(5); 6 7

MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法

今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...")中检测到有潜在危险的Request.Form 值.说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击.若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMo