2011-05-01 36 views
2

當我使用下面的代碼時,我得到一個友好的錯誤信息(和YSCD一樣友善)告訴我我不應該使用'@',但是當我不使用它時,我的表單聲明呈現爲文字Razor代碼,而不是預期的HTML元素。我究竟做錯了什麼?如何在Razor中有條件地渲染表單?

@if (Model.Step == Trocrates.Web.Models.PasswordResetModel.PasswordResetSteps.StartRequest) 
{ 
     @using (Html.BeginForm()) { Html.ValidationSummary(true); 
     <fieldset style="border: 0px;"> 
      <div class="editor-label"> 
       @Html.LabelFor(model => model.UserName); 
      </div> 
      <div class="editor-field"> 
       Html.EditorFor(model => model.UserName) Html.ValidationMessageFor(model => model.UserName)' 
       <input type="submit" value="Log In" /> 
       &nbsp;&nbsp;@Html.ActionLink("Send", "BeginResetPassword", "Account") 
      </div> 
     </fieldset> 
     } 
} 

對不起讀者,它最初是在同一行BeginForm引起混亂不太顯眼開括號字形。當我結束時,事情回落到位。

+1

你的代碼在哪裏? – amccormack 2011-05-01 16:31:34

+0

對不起,它現在在那裏,我的評論什麼是錯的。我想我們會保持開放以防其他新手遇到它? – ProfK 2011-05-01 16:43:04

+0

是不是MVC分離關注點的主要觀點?我看到了一個邏輯的視圖,並控制它將呈現的部分。對我來說,這應該通過每個「Model.Step」的單獨視圖來處理,並且邏輯應該由控制器的動作選擇正確的視圖來進行渲染。 – 2011-05-02 08:15:04

回答

3

您是否嘗試刪除using聲明中的@符號?由於if塊已經處於代碼模式,因此@符號並不代表任何內容。這是唯一離我而去的地方。