2014-01-09 100 views
1
@model Portal.Models.MessageModel 

<link href="~/Content/jquery.wysiwyg.css" rel="stylesheet" /> 
<script type="text/javascript" src="~/Scripts/jquery-2.0.3.js"></script> 
<script src="~/Scripts/jquery-migrate-1.2.1.js"></script> 
<script src="~/scripts/jquery.unobtrusive-ajax.js"></script> 
<script type="text/javascript" src="~/Scripts/jquery.wysiwyg.js"></script> 
<script type="text/javascript" src="~/Scripts/wysiwyg-controls/wysiwyg.image.js"></script> 
<script type="text/javascript" src="~/Scripts/wysiwyg-controls/wysiwyg.link.js"></script> 
<script type="text/javascript" src="~/Scripts/wysiwyg-controls/wysiwyg.table.js"></script> 
<script type="text/javascript" src="~/Scripts/wysiwyg-controls/wysiwyg.cssWrap.js"></script> 
<script type="text/javascript" src="~/Scripts/wysiwyg-controls/wysiwyg.colorpicker.js"></script> 

<script type="text/javascript"> 
    (function($) { 
     $(document).ready(function() { 
      $('#messagearea').wysiwyg({ 
       initialContent: function() { 
        var inittext = ""; 
        @{if (Model != null) 
         { 
          <text>inittext = '@Model.MessageText';</text> 
         } 
        } 
         return inittext; 
       } 
      }); 
     }); 
    })(jQuery); 
</script> 
    <table id="compose-table" style="border-spacing:0 0; max-width: 1200px; min-width: 450px;box-shadow: 0 0 5px 2px #cfcfcf; width:auto; background-color:white"> 
     <tbody> 
      <tr > 
       <td style="box-shadow: inset 0 0 10px #383838;"> 
        <form> 
         <div id="destinations" style="border-bottom: 1px solid #cfcfcf; padding: 12px 1px 12px 2px; ">        

          **<input name="to" spellcheck="false" autocomplete="false" autocapitalize="false" autocorrect="off" style="padding-left: 8px; background-color:transparent; width:1078px; resize:none; border: none;" placeholder="To" onfocus="displayCCandBCC" value="@Model.From"/>** 
         </div> 
         <div id="addressdiv" style="display: none"> 
          <table> 
           <tbody> 
            <tr id="cc" style="display: none"></tr> 
            <tr id="bcc" style="display: none"></tr> 
           </tbody> 
          </table> 
         </div> 

         <div id="subjectdiv" style="border-bottom: 1px solid #cfcfcf; padding : 12px 1px 12px 2px; "> 
         @{if (Model == null){ 
          <input name="subject" style="padding-left: 8px; width: 1078px; border: none; background-color: inherit" placeholder="Subject" /> 
          } 
          else 
          { 
          <input name="subject" style="padding-left: 8px; width: 1078px; border: none; background-color: inherit" placeholder="Subject" value="@String.Concat("re: ", Model.Subject)" /> 
          } 
} 
         </div> 
         <textarea id="messagearea" style="min-height:300px; width:100%; padding:0 0 0 0"></textarea> 
        </form> 
       </td> 
      </tr> 
     </tbody> 
</table> 

這個腳本是在CSHTML Razor視圖,進入視圖模型爲空,但我得到一個空引用異常:語句中如果塊時條件爲假,即使執行

異常詳細信息: System.NullReferenceException:未將對象引用設置爲對象的實例。

Source Error: 

Line 20:  { 
Line 21:   Response.Write("inittext = '@Model.MessageText';"); 
Line 22:  } 
Line 23:  return inittext; 
Line 24: } 

源文件:d:\項目\病人門戶\ Portal.MVC \查看\信息\ Compose.cshtml行:22

爲什麼的Response.Write仍然即使if條件爲假也執行,並且爲什麼異常指向第22行而不是第21行?

+0

錯誤通常指向後面的行或代碼超出範圍的行。 – gunr2171

+0

您是否需要在「模型」之前刪除「@」? – David

+0

@David我已經做到了這兩種方式,沒有任何區別 – BlackICE

回答

1

我沒有MVC5來測試這一點,但我覺得你Response對象爲空,你應該創建動態JavaScript這樣的代替:

@if (Model != null) 
{ 
    <text>inittext = '@Model.MessageText';</text> 
} 

此外,確保Model.MessageText被正確地轉義如此它的內容不會導致JavaScript錯誤。

+0

我最初有這個,並將其改爲響應,因爲我想到也許是奇怪的事情發生在 ...標記。 – BlackICE

+1

如果是這樣的話,那麼你的錯誤是在別的地方。你在cshtml文件的頂部是否有正確的'@ model'聲明? – David

+0

是的,我已經把整個代碼放在帖子裏了。 – BlackICE

0

由於您在JS代碼塊中,因此您需要使用明確的CSHTML開始標記來執行if操作。

+0

我試着把它包裝在'@ {...}'中,並沒有任何幫助。 – BlackICE

+0

你可能需要將它存儲到你的JS腳本塊的開頭的一個變量中......我記得不得不這樣做,因爲Razor解釋器變得困惑...... –

相關問題