0

私の最初のMVC3アプリに取り組んでいます。2つのオブジェクト(オブジェクトA、オブジェクトB)を持つ単純なビューがあります。オブジェクトBはオプションです。両方のオブジェクトを使用してモデルを作成し、コントローラーが正常に動作してデータをビューにやり取りしました。

ユーザーがオブジェクトBのデータを入力するかどうかを決定するために、単純なDropDownListを挿入しようとしています。ドロップダウンリストは単純です。2つの値「Yes」と「No」です。
例:パート「B」を続行しますか?
[はい]
[いいえ]

ビューで、ユーザーはオブジェクトAのすべてのフォーム項目に入力します。次に、オブジェクトBの項目に入力するかどうかを選択できます。必要に応じて、「はい」を選択してもらいます(私はJqueryを使用して、その時点でより多くのページを表示します)。

私の質問:フォームの送信後にコントローラーでアクセスできる単純なドロップダウンリスト(または基本的なHTML入力type = "select" ...)を作成するにはどうすればよいですか?

私のコントローラーでは、次のことを実行したいと思います。
*オブジェクトAに対して処理を実行します*オブジェクトAに対して処理を実行します
*選択されているかどうかを確認しますはい
*オブジェクトBに対して処理を実行します

[はい/いいえ]ドロップダウンのような単純なものをモデルに入れる必要がありますか?何も入力されていません。ビューでユーザーが決定しただけです。これを行う簡単な方法(ViewBag?)が必要なことは知っていますが、私は新しく、明らかに迷子になっています。

TL; DR-コントローラーでアクセスできるビューに単純なドロップダウンリストとして作成するにはどうすればよいですか?

4

2 に答える 2

2

オブジェクトの HTTPPOST でビューから値を取得するための経験則は、入力コントロールの id および name プロパティに Models プロパティ名と同じ名前を付けることです。これを行う簡単な方法は、Html ヘルパーを使用することです。

    public class Model
    {
        public Model()
        {
            List<SelectListItem> options = new List<SelectListItem>();
            options.Add(new SelectListItem { Value = true.ToString(), Text = "yes" });
            options.Add(new SelectListItem { Value = false.ToString(), Text = "no" });
            ContinueOptions = options;
        }
        public bool Continue { get; set; }
        public IEnumerable<SelectListItem> ContinueOptions { get; set; }
    }

あなたのビューで:

@Html.DropDownListFor(m => Model.Continue, Model.ContinueOptions)

コントローラーで:

[HttpPost]
public ActionResult Edit(Model model)
{
    bool continueOn = model.Continue;   

}
于 2012-05-25T13:06:27.283 に答える
0

はい、ドロップダウンはモデルの一部である必要があります。そうでない場合、コントローラーはユーザーからの回答がありません。

public SomeViewModel
{
  public ObjectA A { get; set; }
  public ObjectB B { get; set; }
  public bool? IsBSelected { get; set; }
}

私は通常bool?、ユーザーがどちらを選択したかを知りたいという理由だけで使用しますが、使用してboolも問題ありません。

于 2012-05-25T06:13:36.857 に答える