2009-08-12 9 views
0

私は次のようにいくつかの設定を処理するために、チェックボックスのリストを作成しています...ASP.net MVC(C#の)のチェックボックス

 <ul> 
      <%foreach (var item in ViewData["preferences"] as IEnumerable<MvcA.webservice.SearchablePreference>) 
       { 
        var feature = new StringBuilder(); 
        feature.Append("<li>"); 
        feature.Append("<label><input id=\"" + item.ElementId + "\" name=\"fpreferences\" type=\"checkbox\" />" + item.ElementDesc + "</label>"); 
        feature.Append("</li>"); 
        Response.Write(feature); 
       } 
      %> 
     </ul> 

データは[] SearchablePreferenceのViewDataをに手渡され、リストには細かい表示します。

質問は次のとおりです。ページを元に戻す必要がある場合(つまり、検証に失敗した場合)、選択したボックスに再投入するにはどうすればよいですか。

ウェブフォームでは、viewstateによって自動的に処理されます。他の入力要素では、送信データを単にViewData経由でページに渡しています。

おかげ

答えて

2

代わりに使用Html.Checkbox

+0

良い点;私は愚かだったことを認めなければならない –

+0

この便利な発見:Gotcha 2 - http://www.mikesdotnetting.com/Article/109/ASP.NET-MVC-Entity-Framework-One-to-Many-and-Many-to -Many-INSERTS –

0

すべての値を読み取ってから、戻ってくるビューのViewDataに追加して、ビュー表示のチェックボックス(好ましくはHtml.Checkbox)に書き込む必要があります。私の知る限りでは、Html.Checkboxは自動的にviewstateを管理しません。

私は標準のCRUDオブジェクトを持っていると仮定して、私はしばしばこのような編集ビューを持っています。

<input (other input attribute here) value="<%=(myObj == null ? "" : myObj.AppropriateProperty)%>" /> 
+1

私が間違っている場合は私を修正しますが、MVCはViewStateを使用せず、MVCでViewStateを使用しないでください。 ViewStateが必要な場合は、Webフォームを使用します。 – Martin

+0

オリジナルのことは、Webformsでは、Viewstateを持っているときにこれを行う必要はないと言います。私は機能の1つのビットのために全体のアプリを書き直すことを計画していません。したがって、代替案を探している。 Ta –

+1

@Russell。 ViewModelとViewStateを混同していると思います。 HtmlHelpersは最初にViewData.ModelState ["controlName"]を参照します。Value.RawValueと入力すると、ViewData.Eval ["controlName"]が再読み込みされます。あなたは私が強くお勧めするPro ASP.NET MVC Frameworkの本で読むことができます。 – RichardOD

0

(私が編集して、新しいのための同じビューを使用)私はhere'sどのよう

、手動でそれを行う上で主張すればHtml.Checkbox

を使用しますが、RichardODに同意しますデータを保持するためにオブジェクトを使用して(何かが選択されているかどうかにかかわらず)、それをビューに渡します。チェックボックスに値を設定するときは、関連する値が設定されているかどうかを確認し、そうであればhtml "checked =チェックボックス

これをレンダリングするとき、オブジェクトは偽のデータしか持たないので、何も選択されません。

0

ビューにコードが多すぎます。これはコントローラーで行う必要があります。表示は次のようにする必要があります。

<ul> 
     <%foreach (var item in ViewData["preferences"] as IEnumerable<MvcA.webservice.SearchablePreference>) 
      { 
       <li> 
        <%=Html.Checkbox(........) %> 
       </li> 
      } 
     %> 
    </ul> 
関連する問題