Enum выбраць спіс ID ня прызначаецца SQL з дапамогай ASP.NET MVC3

Падстава для маіх выбірае спісы прыходзяць з пералічэння (у мадэлі):

public enum week : int
{
    Every = 0,
    First = 1,
    Second = 2,
    Third = 3,
    Fourth = 4,
    Last = 5

}

public enum weekday : int
{
    Sunday = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
}

Я пасылаю іх да прадстаўленні з дапамогай ViewBag, як паказана ў наступнай функцыі (ў кантролеры):

     private void PopulateDropDown(object selectedLocation = null, )
        {
            var LocationQuery = from c in db.Location orderby c.name select c;
            ViewBag.LocationSelect = new SelectList(LocationQuery, "LocationID", "name", selectedLocation);

            var statuses = from week w in Enum.GetValues(typeof(week))
                           select new { ID = (int)w, Name= w.ToString() };
            ViewBag.week = new SelectList(statuses, "ID", "Name");
            var weekdayFormat = from weekday s in Enum.GetValues(typeof(weekday))
                           select new { ID = (int)s, Name = s.ToString() };
            ViewBag.weekday = new SelectList(weekdayFormat, "ID", "Name");
        }

Для гэтага прыкладу, вы можаце ігнараваць LocationQuery (нават калі гэта не працуе, альбо ...)

І ва ўяўленні ў мяне ёсць:

@Html.DropDownList("locationID", (SelectList)ViewBag.LocationSelect, "Select a location")

і

         @Html.DropDownList("Week", (SelectList)ViewBag.TypeSelect, "Week")
         @Html.DropDownList("weekday", (SelectList)ViewBag.TypeSelect, "Day")

Тым не менш, ні адзін з дадзеных шлем не атрымлівае сабраны ў рамках мадэлі:

public class Schedule
{

    public Schedule()
    {
        Times = new List();
    }
    public int ScheduleID { get; set; }
    public bool isDisabled { get; set; }
    [DisplayName("For Delivery")]
    public bool isDeliver { get; set; }
    public int Count { get; set; }
    public virtual ICollection Times { get; set; }
    public virtual Location Location { get; set; }
    public int Week { get; set; }
    public int weekday { get; set; }
}

Пры візуалізацыі ВЫБРАЦЬ спіс выглядае, як я хацеў:

         

However, I cannot get the data of the values sent to the controller on POST. I cannot get the value of the week by doing schedule.week as expected. Am I missing a step on posting int values collected from a selectlist, polulated by an enum, і stored as an int?

(Дзякуй за чытанне)

іrew

0
Калі я выкарыстоўваю тыдзень тыдняў ці будні дзень тыдня (з выкарыстаннем пералічэння ў якасці тыпу аб'екта ў EF Defintion) табліца ў базе дадзеных падае слупкі «Тыдзень» і «дзень тыдня»
дададзена аўтар Andrew, крыніца
Дарэчы, гледзячы на ​​слова «тыдзень» на працягу доўгага перыяду часу зробіць вас пытанне, калі гэта правільнае напісанне.
дададзена аўтар Andrew, крыніца

2 адказы

Я мяркую, што вашы дзеянні POST прымае мадэль Schedule ў якасці аргументу:

[HttpPost]
public ActionResult Foo(Schedule model)
{
    ...
}

Зараз давайце спачатку паглядзім на першым выпадальным спісе:

@Html.DropDownList("locationID", (SelectList)ViewBag.LocationSelect, "Select a location")

Калі прадстаўлены ён будзе пасылаць яго значэнне як ў запыце locationID = 123 POST. Цяпер, гледзячы на ​​графік не ўласцівасць называецца LocationID на ім, так што гэта цалкам нармальна, што вы не атрымаеце яго значэнне. У вас ёсць Месцазнаходжанне ўласцівасць, якое, як мяркуецца мае LocationID ўласцівасці. Такім чынам, вы можаце змяніць ваша падзенне ўніз, як гэта:

@Html.DropDownList("Location.LocationID", (SelectList)ViewBag.LocationSelect, "Select a location")

Цяпер тыпы пералічэнняў. Калі я тэставаў абодва яны працавалі для мяне. Я быў у стане атрымаць адпаведныя цэлалікавых значэння ў дзеянні POST ўнутры Тыдзень і будні дзень ўласцівасці, адпаведныя значэнняў, абраным у выпадаючыя.

0
дададзена

Я не бачу, дзе вы ўсталявалі ViewBag.TypeSelect.

Вы спрабавалі выкарыстоўваць DropDownListFor?

@Html.DropDownListFor(x => x.Week, (SelectList)ViewBag.week, "Week")

<Моцны> Змяніць

Акрамя таго, ваша кропка гледжання, безумоўна, моцна тыпізаваных? Ці можаце вы паказаць, што?

0
дададзена
Я спрабаваў гэты метад, і ён не працуе.
дададзена аўтар clockwiseq, крыніца