0

HTMLドロップダウンリストがあります:

<select name="status">  
       <option value="close" >Close Task</option>
       <option value="open" >Reopen Task</option>
  </select>

ビューモデルの「Task.Completion」プロパティに基づいて「selected」オプションを設定したい:

public class TaskEditViewModel
{
    public Task Task { get; set; }
    public TaskComment TaskComment { get; set; }
}

したがって、Task.CompletionがNULLの場合は「閉じる」オプションが選択され、そうでない場合は「開く」オプションが選択されます。

これどうやってするの?

4

1 に答える 1

0

ビューモデルは、ビューで実行しようとしていることに適合していないようです(質問によると、ドロップダウンリストを表示し、ビューモデルのプロパティに基づいて値を事前に選択します)。

したがって、はるかに現実的なビューモデルは次のようになります。

public class TaskEditViewModel
{
    public string Completion { get; set; }
    public IEnumerable<SelectListItem> Actions 
    { 
        get
        {
            return new[]
            {
                new SelectListItem { Value = "close", Text = "Close Task" },
                new SelectListItem { Value = "open", Text = "Reopen Task" },
            };
        }
    }
}

次に、このビューモデルにデータを入力してビューに渡すコントローラーアクションを作成できます。

public ActionResult Foo()
{
    var model = new TaskEditViewModel();

    // this will automatically preselect the second item in the list
    model.Completion = "open";

    return View(model);
}

最後に、強く型付けされたビュー内で、DropDownListForヘルパーを使用してこのドロップダウンをレンダリングできます。

@model TaskEditViewModel
@Html.DropDownListFor(x => x.Completion, Model.Actions)
于 2012-01-03T17:00:02.607 に答える