0

次のドロップダウン リストを含む編集ビューがあります。

    @Html.DropDownListFor(model => model.Size, 
          new SelectList(Enumerable.Empty<SelectListItem>(), "Size", "Size"),
          Model.Size,  
          new { id = "WoodSize" })
    @Html.ValidationMessageFor(model => model.Size)

コントローラーの関連部分は次のとおりです。

    [HttpPost]
    public ActionResult Edit(Part part)
    {
        try
        {
            if (ModelState.IsValid)
            {
                unitOfWork.PartRepository.Update(part);
                unitOfWork.Save();
                return RedirectToAction("Index");
            }
        }
        catch (DataException)
        {
            //Log the error (add a variable name after DataException)
            ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
        }
        return View(part);

SelectedValue は Get で表示されますが、変更しない限り、Post でコントローラーに返されず、更新は失敗します。値が手動で選択された場合、選択が返され、更新が成功します。SelectValue は実際には何も選択せず、デフォルトのテキストのみを表示しているようです。

私は何かが欠けている必要がありますが、何が欠けているのか途方に暮れています。

4

1 に答える 1

0

3 番目のパラメーターは単なるラベルであるため、ドロップダウンに「サイズの選択」と表示させることができます。たとえば、値は含まれていません。あなたのインスタンスでは、Model.Size値をラベルとして使用しています

モデル値が利用可能なオプションのリストの値と一致する場合、それは選択済みとしてマークされ、送信時に値がコントローラーに送信されます。

于 2012-04-18T09:13:45.267 に答える