ASP.NET модель MVC, связывающая в список

В моем сайте MVC ASP.NET часть функции позволяет пользователю вводить часы, когда определенное место проведения открыто.

Я решил сохранить в эти часы в таблице VenueHours в моей базе данных, с отношениями FK к PK к таблице Venues, а также DayOfWeek, OpeningTime и параметрами ClosingTime.

По моему мнению, я хочу позволить пользователю только вводить времена, о которых они знают; другими словами, несколько дней не могут быть заполнены в для Места проведения. Я думаю о создании флажков, которые пользователь может проверить для включения полей OpeningTime и ClosingTime для DayOfWeek, которому принадлежит флажок.


Мой вопрос касается, как передать эту информацию моему Действию Контроллера HttpPost.

Поскольку я знаю максимальную сумму Дней, которые могут быть переданы в (7), я мог, конечно, просто записать 7 параметров nullable VenueHour в свое Действие, но я уверен, что существует лучший путь.

Я могу так или иначе связать информацию о Представлении в Список, который передается моему Действию? Это также поможет мне, если я столкнусь со сценарием, где нет никакого предела тому, сколько информации пользователь может заполнить.

5
задан Maxim Zaslavsky 17 June 2010 в 03:08
поделиться

2 ответа

Скотт Хансельман опубликовал очень хорошую статью о том, как связыватель моделей по умолчанию работает с коллекциями, массивами и словарями. Это замечательно, если вы не хотите писать настраиваемую подшивку модели, хотя написать настраиваемую подшивку модели не так уж и сложно.

13
ответ дан 18 December 2019 в 13:11
поделиться

Пожалуйста, попробуйте выполнить следующие действия

1 - Поместите все поля ввода (которые могут быть заполнены элементом управления DatePicker JQuery) внутри div в представлении aspx.

2 - используя селекторы Jquery, захватите все значения (внутри вышеуказанного DIV), которые должны быть переданы в метод Action, в массив JavaScript на стороне клиента.

пожалуйста, обратитесь к Фильтрация элементов ввода внутри DIV

var enteredVenueHours = new Array();
for(var i=0;i < inputsInsideDiv.length;i++)
{
    // add the elements to the JS array
}

3 - Используйте Jquery post, чтобы отправить введенные значенияVenueHours обратно в действие контроллера**

$.post('<%=Url.Action("ActionMethod")%>',{ EnteredVenueHours: enteredVenueHours,function (data)
{
     // Udpate status to be displayed here. 
});

4 - Убедитесь, что метод действия контроллера имеет следующую подпись

[AcceptVerbs(HTTP.Post)]
public ActionResult ActionMethod(List<string> EnteredVenueHours)
{
     // Have the DB persistance logic .
}
1
ответ дан 18 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: