POST / Submit / Save Модель с пользовательским DataType - PullRequest
0 голосов
/ 11 октября 2011

Я создал собственный тип данных («Дни») и смог создать частичное представление «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 (модель, скорее всего, будет нулевой, поскольку мы создаем новые "Дни")

@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);
    }

И после размещения модели,timeRequest.Days всегда нулевой.

1 Ответ

0 голосов
/ 12 октября 2011

В вашей ViewModel добавьте еще одно свойство: 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;" })

Я не совсем понял, почему вы проверяете, является ли Модель нулевойв представлении.Из того, что я вижу, оно никогда не должно быть нулевым.

...