Прежде всего, позвольте мне сказать, что я новичок в MVC, поэтому, если что-то кажется странным, вот почему. Я, вероятно, не имею подходящего aproach, поэтому мне хотелось бы получить некоторые рекомендации.Публикация неизвестного количества полей
У меня есть форма, из которой пользователь должен ввести переводы на страницу. Переводы обрабатываются как список объектов TranslationObjects для объекта страницы. Мне нужен способ отображения полей ввода в форме для каждой ветви языка, представленной на сайте, и позволить пользователю заполнить их и отправить их обратно на контроллер. Этот пример - просто упрощение более сложной модели, но это довольно хорошо объясняет проблему.
модель представление:
public class Page
{
public List<TranslationObject> Translation { get; set; }
}
public class TranslationObject
{
public string LanguageBranch { get; set; }
public string PageName { get; set; }
public string PageDescription { get; set; }
}
контроллера для визуализации формы:
public ActionResult AddPage()
{
var model = new Page {Translation = new List<TranslationObject>()};
foreach (var languageBranch in new[] {"en", "sv", "de"}) // These are normally loaded from database
{
model.Translation.Add(new TranslationObject{ LanguageBranch = languageBranch});
}
return View(model);
}
Вид:
@model MvcApplication1.Models.Page
@using (Html.BeginForm("SubmitPage", "Home", FormMethod.Post))
{
foreach (var translation in Model.Translation)
{
@Html.LabelFor(x => x.Translation.FirstOrDefault(y => y.LanguageBranch == translation.LanguageBranch).PageName)
@Html.TextBoxFor(x => x.Translation.FirstOrDefault(y => y.LanguageBranch == translation.LanguageBranch).PageName)<br/>
@Html.LabelFor(x => x.Translation.FirstOrDefault(y => y.LanguageBranch == translation.LanguageBranch).PageDescription)
@Html.TextBoxFor(x => x.Translation.FirstOrDefault(y => y.LanguageBranch == translation.LanguageBranch).PageDescription)
}
<input type="submit" value="Submit"/>
}
И контроллер для поста:
[HttpPost]
public ActionResult SubmitPage(Page model)
{
// Save model to db
return View();
}
Объект перевода модели страницы всегда равен нулю. Я знаю, что это неправильный подход, поэтому я прошу какое-то направление сделать список объектов и вернуть их в контроллер при публикации
пользователя Для вместо ForEach.In этого случай у вас будет список населенного на posting.Also убедиться в списке переводы инициализируются в конструкторе модели. – Priyank