0

複数のオブジェクトタイプ(ラジオボタン、ドロップダウン、チェックボックス)を含む質問/回答ページを作成しています。

Id  QuestionText    AnswerId    AnswerText      ObjectType
1   text one        1           Personal        DropDown
1   text two        2           Business        DropDown
2   Text three      3           Direct Deposit  CheckBox
2   text four       4           Some Answer     CheckBox

すべての質問、回答、およびオブジェクトタイプのリストを含むモデルがあります。

dropdownlistfor(例として)リストから2つの項目のみを入力し、次に関連するチェックボックスのグループを入力し、次に関連するラジオボタンのグループを入力するにはどうすればよいですか?

dropdownlistforモデルに列挙するルックス。

動作しない私のコード:

@if (Model != null)
{
   for (int i = 0; i < Model.Count; i++)
   {
      if (Model[i].AdditionalQuestionTypeId == 1)
      {
          @Html.DropDownListFor(model => model[i].AdditionalQuestionId, ((IEnumerable<Curo.Web.InterAcct.Models.AdditionalQuestionAnswerModel>)Model[i].AnswerText)
            .Select(option => new SelectListItem
            {
                Text = (option == null ? "None" : option.Description),
                Value = option.Id.ToString(),
                Selected = (Model != null) && (option.Id == Model[i].AdditionalQuestionId)
            }), "Choose...")
4

2 に答える 2

2

たくさんのロジックでビューを詰まらせるのは最善の考えではありません。これは実際には、MVC の望ましいアプローチではありません。

ビューではなく、コントローラーでこのロジックを使用します。コントローラで目的のシナリオに必要なオプションを作成し、そのオプションを に設定しpropertyますModel。次に、ビューは単にそれにバインドされpropertyます。

public class MyModel {
    public string MyValue { get; set;}
    public List<SelectListItem>  Options { get; set; }
}

public ActionResult MyAction(){

    MyModel model = new MyModel();
    // populate options here
    model.Options = new List<SelectListItem>();
    return View(model);
}

次に、あなたの見解:

@Html.DropDownListFor(m => m.MyValue, m => m.Options)
于 2012-08-27T15:35:59.027 に答える
0

あなたのコードからはわかりにくいですが、ほとんどそこにいると思います。IEnumerable を使用して dropdownlistfor ステートメントを実行する必要がありますが、構文がオフになっているようです。

@Html.DropDownListFor(model => model[i].AdditionalQuestionId, new SelectList(Model.Answers.Where(f=>**Some code to select what values you want**), "Id", "Description", Model[i].AdditionalQuestionId))

エラーメッセージが表示されると助かりますが、現時点では単なる構文だと思います。

于 2012-08-27T15:34:17.743 に答える