2011-02-28 85 views
3

我與RenderPage一起Html.BeginForm(不知道我在做什麼錯了)的問題。ASP.NET MVC3 RenderPage&Html.BeginForm

假設你有一個簡單的_Test.cshtml像這樣:

@{ 
    <span>Test Text</span> 
} 

然後假設你有一個簡單的頁面像這樣(至極使用_Test.cshtml):

@{ 
    Layout = null; 
    var b = new int[] { 0, 1, 2, 3, 4 }; 
} 

@{ 
    <html> 
     <body> 
      @* @RenderPage("~/Views/Shared/_Test.cshtml") *@ 
      <div> 
       @foreach (int i in b) 
       { 
        <div> 
        @using (Html.BeginForm("Action", "Controller", new { id = i }, FormMethod.Post, new { id = "frm_"+ i.ToString() })) 
        { 
         <span>Label&nbsp;&nbsp;</span> 
         <input type="submit" id="@i.ToString()" value="@i.ToString()" /> 
        } 
        </div> 
       } 
      </div> 
     </body> 
    </html> 
} 

如果你對此有何評論在RenderPage助手調用中,您可以正確獲得一系列帶有相應提交按鈕的表單。如果取消註釋RenderPage助手,則不會生成標記。不知道發生了什麼,有人可以幫我嗎?

+2

你爲什麼要在代碼塊中包裝頁面? – SLaks 2011-02-28 15:51:43

回答

0

試着改變你的_Test.cshtml到

<span>Test Text</span> 

而且這可能是一個風格問題,但我更喜歡Html.PartialRenderPage

+0

是的,這是我同意的品味問題,但無論如何,如果您使用RenderPage,它不起作用,我想知道爲什麼。 – Roberto 2011-02-28 16:24:03

2

你爲什麼使用RenderPage? Html.Partial似乎更原生:

@{ 
    Layout = null; 
    var b = new int[] { 0, 1, 2, 3, 4 }; 
} 
<html> 
    <body> 
     @Html.Partial("~/Views/Shared/_Test.cshtml") 
     <div> 
      @foreach (int i in b) 
      { 
       <div> 
       @using (Html.BeginForm("Action", "Controller", new { id = i }, FormMethod.Post, new { id = "frm_"+ i.ToString() })) 
       { 
        <span>Label&nbsp;&nbsp;</span> 
        <input type="submit" id="@i.ToString()" value="@i.ToString()" /> 
       } 
       </div> 
      } 
     </div> 
    </body> 
</html> 

,也是你的部分(不需要那些服務器端的bocks @{}當你有靜態的HTML):

<span>Test Text</span> 
+0

我知道,這只是爲了簡化頁面的最佳內容。 – Roberto 2011-02-28 16:21:18