2011-08-22 26 views
1

私はSteven Sandersonのブログ投稿hereに従って、編集可能で可変長の項目リストを作成しています。彼のポストでは、彼はdivを使ってリストに新しい項目を表示しますが、私はテーブルを使用しています。したがって、各項目の私の部分的なビューは、編集する様々なフィールドを持つtrタグをレンダリングしています。今の私の部分図は、このようなものになります。可変長リストの編集、ASP.NET MVC 3スタイルのテーブル

<tr>     
     @using (Html.BeginCollectionItem("LineItems")) 
     {    
      <td>   
       @Html.TextBoxFor(m => m.Description) 
       @Html.ValidationMessageFor(m => m.Description)        
      </td> 
      <td> 
       @Html.TextBoxFor(m => m.Quantity)   
       @Html.ValidationMessageFor(m => m.Quantity) 
      </td> 
      <td> 
       @Html.TextBoxFor(m => m.Amount)   
       @Html.ValidationMessageFor(m => m.Amount)  
      </td> 
     }  
</tr> 

をこれは実際に私がテストしたすべてのブラウザで正しくレンダリングするが、問題はそれが正しい開いTRタグの後に隠されたinputタグを置き、これは本当に不正なHTMLを生成していることです。

<tr> 
    <input type="hidden" name="LineItems.index" .... /> 
    <td> 
     ... 
    </td> 
    ... 
</tr> 

あなたが最初のタグに使用して文を移動することができますと言うと、それは動作しますが、私は、これはASP.NET MVCを使用して仕事を得ることができていないリンクポスト上の別のユーザーによるコメントはあり3とRazorビューエンジンがあります。

誰かが、Steven Sandersonが提示したロジックをどのように使うべきか考えていますが、無効なHTMLを生成しないように最初のtdの中の隠しインデックス入力フィールドを取得していますか?

おかげで、私が思いついた実験のビットの後

+0

HtmlPrefixScopeExtensionsをSteven Sandersonのブログから変更して機能させる必要がありましたか?あなたが行った変更を共有してもいいですか?私はカミソリでMVC3で同じことをしようとしており、オブジェクトコレクションはnullを返します。ありがとうございました – NullReference

+0

私たちはそれを変更する必要はありませんでした。唯一の変更は、受け入れられた答えの下で述べられている構文です。必要に応じて、新しい質問を開始することができます。私たちが行ったことと比較してコードを見ることができます。違いがあればわかります。 –

答えて

4

<tr>     
    <td>   
    @using (Html.BeginCollectionItem("LineItems")) 
    {    
      @Html.TextBoxFor(m => m.Description) 
      @Html.ValidationMessageFor(m => m.Description)        
     @:</td> 
     @:<td> 
      @Html.TextBoxFor(m => m.Quantity)   
      @Html.ValidationMessageFor(m => m.Quantity) 
     @:</td> 
     @:<td> 
      @Html.TextBoxFor(m => m.Amount)   
      @Html.ValidationMessageFor(m => m.Amount)  
    }  
    </td> 
</tr> 

私のためのトリックを行いました。

+0

幾分奇妙に見えますが、間違いなくトリックです!ありがとう! –

+0

私はそれが奇妙に見えることに絶対に同意する、それはいくつかの恐ろしいWebフォームの思い出をもたらした。 '@:'はプレーンテキストとコードを混在させるための省略形です。[リンク] http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx –

関連する問題