1

国のリストを表示する簡単なドロップダウン ボックスを作成したいと思います。そのデータはデータベースから取得され、エンティティ フレームワーク データ コンテキストを使用してアクセスされます。ユーザーは、データを返送する前に国を選択する必要があります (簡単な検証チェック)。

ビュー モデルを作成し、いくつかのコードも記述しましたが、自分のデザインについてよくわからず、コードを完成させるためにも助けが必要です。私はいくつかの検索を行いましたが、これを行う簡単な方法を見つけることができませんでした。リポジトリの使用方法がまだわからないため、コンテキストからデータを取得しています。現時点では、高度になりすぎずに基本的なドロップダウンが機能することを望んでいます。助けてください。ビューモデルの更新 - Country.cs

public class Country
{   [Required]
    public int Id { get; set; }
    public IEnumerable<SelectListItem> Countries { get; set; }
}

コントローラ

Public ActionResult CountriesDropDown()
{
      Models.Country countryModel = new Models.Country();
            using (ctx)
            {
                var model = (from q in ctx.Countries
                             select new SelectListItem
                             {
                                 Text = q.CountryId,
                                  Value = q.CountryName
                             }).ToList();
                countryModel.Countries = model;    
            }


            return View("Test",countryModel);
}

国ビュー

@using (Html.BeginForm("DoSomething", "Test", FormMethod.Post))
{ 

@Html.DropDownListFor(model => model.Id, Model.Countries, "Please Select")
@Html.ValidationMessageFor(model => model.Id) //The validation part still Not Working. I want the user to select a country before submitting the form. Please help
<input type = submit value="submit" />
}



      [HttpPost]
        public ActionResult DoSomething(Models.Country Selectedcountry) 
             //country.Id holds the value of selected drop-down and it works fine
        {
            if (ModelState.IsValid) 
//I need to do server-side validation and return back to client if Selectedcountry.Id is null (just in case, the client-side validation doesn't work)
            {
                return View();
            }
            else
            {

                return View("Test");
            }
        }

ありがとう

4

2 に答える 2

1

コントローラーでこれを行います:

var model = new Country {
    // assuming that the country with "id" exists
    CountryId = ctx.Countries.Get(id).Id
};
model.Countries = 
    from q in ctx.Countries
    select new SelectListItem { 
        Text = q.Id, 
        Value = q.Name
    };
return view("countries", model);

モデルでこれを行います

@model Models.Country

@Html.DropDownListFor(model => model.CountryId, model.Countries)
于 2013-04-12T10:43:13.073 に答える
0

これを試して:

[Required(ErrorMessage = "Please select a Country")]
public string CountryCode{ get; set; }

public IEnumerable<SelectListItem> CountryList
{
    get
    {
        return Country
            .GetAllCountry()
            .Select(Country=> new SelectListItem 
            { 
                Text = Country.Value, 
                Value = Country.Value 
            })
            .ToList();
    }
}

次に、対応する検証エラー メッセージを追加できます。

@Html.DropDownListFor(model => model.CountryCode, Model.CountryList, "select")
@Html.ValidationMessageFor(model => model.CountryCode)
于 2013-04-12T10:47:08.107 に答える