mvc中razor的一個bug

  具體東西就很少說了,全部編譯,代碼都是木有問題的。javascript

  結果預覽頁面的時候居然告訴我編譯錯誤,尼瑪這不科學啊。html

  來看看錯誤頁面java

 

看着問題大概應該是缺乏} ,或者多了個} 倒置的編譯錯誤纔對,可是編譯生成徹底沒有問題啊,沒辦法,既然報這個問題,那確定是最終合併生成的代碼文件存在bug.net

那究竟是哪裏出的問題呢,沒辦法,硬着頭皮查吧。調試

1.顯示試着調試運行了一下頁面,發現後臺徹底沒問題。return view() 後,就出現了黃頁。 那問題應該就是在html頁面中了,那就來看看html頁面中有些什麼吧。htm

通常的html,即使是錯了也不會影響編譯纔對,更況且使用vs的自動對齊,是能夠對齊代碼的,一眼看去,應該是沒有問題的。那估麼這問題就應該在開頭了。先來看看blog

頁面的部分代碼吧ip

@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就沒有貼出了,沒什麼意義了。get

要說是}花括號的問題,那就只有一種可能了, 其中花括號的嵌套可能出現了問題。那究竟是什麼問題呢。先嚐試去掉判斷的代碼試試吧。it

靠,果真沒有問題了,頁面至少是顯示出來了。那問題確定就在這裏了。

 

razor語法印象中這麼寫應該是沒問題的吧。因而乎在確認了下,語法確實沒有問題啊。

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

那就很奇怪了,難道是bug?,因而乎換了中寫法,將判斷邏輯單獨寫在了一個代碼塊中(其實能夠直接用三元表達式?:避免這個問題,這裏主要是爲了看看究竟)

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

  再預覽頁面,沒有問題。呵呵,我只能說坑啊,倒黴碰上了。

相關文章
相關標籤/搜索