0

カスタム DataType("Days") を作成し、選択リストを適切にレンダリングする部分ビュー "Days.cshtml" を作成できました。

フォームから選択リストを問題なく設定できますが、カスタム DataType 値が入力されたモデルを投稿する方法に関するドキュメントが見つからないようです。

public class TimeRequestModel
{
    public int EmployeeID { get; set; }
    public int JobAllocationID { get; set; }
    [DataType("Days")]
    public List<SelectListItem> Days { get; set; }
}

Days.cshtml (新しい「Days」を作成しているため、モデルはおそらく null になります)

@model TimeRequestModel
@Html.DropDownList("", (Model != null ? Model.Days : new List<SelectListItem>()), new { @class = "customfield", @type = "custom", @multiple = "multiple", @size = "14", @style = "text-align: center; float: right; width: 225px;" })

私のコントローラー:

[HttpPost]
    public ActionResult CreateRequest(TimeRequestModel timeRequest)
    {
        if (ModelState.IsValid)
        {
            translator.CreateTimeRequest(timeRequest);
            return RedirectToAction("Index");
        }

        return View(timeRequest);
    }

モデルを POST すると、timeRequest.Days は常に null になります。

4

1 に答える 1

0

ViewModel にもう 1 つのプロパティを追加します: string DaysSelectedValue

DropDownList を次のようにします。

@Html.DropDownList(model => model.DaysSelectedValue, Model.Days, new { @class = "customfield", @type = "custom", @multiple = "multiple", @size = "14", @style = "text-align: center; float: right; width: 225px;" })

ビューで Model が null かどうかを確認する理由がよくわかりませんでした。私が見ていることから、それは決してnullであってはなりません。

于 2011-10-12T07:13:11.700 に答える