3

ASP.NET C# MVC 4 Code First アプリケーション - Visual Studio 2012 Express、SQL Server 2012 Express 内。

私は場所のオブジェクトを持っています。リスト内のすべての場所の名前を出力したいと思います-それぞれの横にチェックボックスがあります。

次に、ログインしたユーザーに好きな場所を選択してもらい、それを保存してもらいます。その後、適切なチェックボックスが選択された状態で、ログインしてそれらすべてをもう一度見ることができます。

最善のアプローチは何ですか?私は MVC が初めてで、ここでのベスト プラクティスがわかりません。

ありがとう

アップデート

以下の CheckboxListFor ヘルパーはうまく機能しましたが、ユーザーの選択を処理する方法が明確ではありませんでした (ID のリストを返すだけです)。

ID のリストを取得するために以下を作成しました。これをオブジェクトのリストに変換し、ビュー モデルの SelecteCities リストに追加します。これにより、ページが投稿される前にユーザーが選択したすべてのチェックボックスが選択されます。

public ActionResult Examples(PostedCities postedCities)
{
 // ViewModel
 CitiesViewModel cvm = new CitiesViewModel();

 // Create list of cities
 List<City> cities = new List<City>{
  new City { Id = 1, Name = "London"},
  new City { Id = 2, Name = "Saigon"},
  new City { Id = 3, Name = "New York"}
 };

 // Assign list of cities to ViewModel 
 cvm.AvailableCities = cities;

 // If posted cities present, user posted something (else probably first call)
 if (postedCities.CityIDs != null)
 {
    // temporary city object
    City cty = new City();

    // List of selected cities
    List<City> selCities = new List<City>();

    // Go through each postedCity ID
    foreach (string s in postedCities.CityIDs)
    {
       // Get ID of postedCity
       int IdSel = Convert.ToInt32(s);

       // Lookup city Id in cities
       cty = cities.Single(c => c.Id == IdSel);

       // Add selected city to cty object
       selCities.Add(cty);
    }

    // Fill cvm.SelectedCities with selCities
    cvm.SelectedCities = selCities;
 }

return View(cvm);
}

これはうまくいきます-それは良いアプローチですか、それとも私はそれを過度に複雑にしましたか? それとも悪いことをした?

4

2 に答える 2