Я работаю над проектом для моего офиса.Конечный результат, который я ищу, состоит в том, что шаблонное письмо извлекается из базы данных, извлекаются разделы, которые требуют конкретного ввода, из этих разделов генерируется форма, затем форма возвращает пользовательские данные, и письмо перестраивается сПользовательские данные интегрированы в текст письма.
например, строка, извлеченная из базы данных, будет выглядеть следующим образом
Claim #: |string^clmNum^Claim Number: | - Ref#: |string^RefNum^Reference Number: |
и будет выглядеть следующим образом после перестроения с пользовательскими данными:
Claim #: 123456 - Ref#: 789012
Это то, чем я занимаюсь до сих пор ...
Разделы между |извлекаются, разделяются и загружаются в IEnumerable
Моя модель foo:
public class Foo
{
public string InputType {get; set;}
public string InputName {get; set;}
public string InputLabel {get; set;}
}
Я передаю IEnumerable в представление с помощью ViewModel
public class FormBuildViewModel
{
public IEnumerable<Foo> FooProperty {get; set;}
}
Затем я динамически отображаю элементы ввода со следующей разметкой Razor.
<form>
@{ var e = Model.FooProperty.ToList();
foreach (var subItem in e)
{
<div class="FormGroup-items">
<label>@subItem.InputLabel</label>
<input name="@subItem.ObjName" type="text" />
</div>
}
}
<..// form button stuff //..>
</form>
, которая создает следующий HTML-код:
<form>
<div class="FormGroup-items">
<label>Claim Number: </label>
<input name="clmNum" type="text" />
</div>
<div class="FormGroup-items">
<label>Reference Number: </label>
<input name="RefNum" type="text" />
</div>
<..// button stuff //..>
</form>
У меня все работает до этого момента.Мне нужно взять данные, введенные в динамически созданную форму, и вернуть их в контроллер таким образом, чтобы я мог индексировать их, чтобы перестроить строку.
Я пытался использовать форму @ html.begin, похожую на эту
@using (Html.BeginForm())
{
@for(int i=0; i<Model.Count; i++)
{
@Html.CheckBoxFor(m => m[i].IsActive, new { @value = Model[i].Id })
@Html.DisplayFor(m => m[i].Name)
}
<input type="submit" value="Save" />
}
, но для использования @ Html.BeginForm вам нужно знать имена элементов до выполнения, и это непохоже, не работает с динамически созданной формой, подобной этой.
Единственное, о чем я могу думать, это то, что мне нужно загрузить данные формы в List и вернуть их в контроллер, но я не могу придумать, как заставить C # позволить мнеинициализировать список и загрузить значения в представлении.Я знаю, что я должен что-то упустить, но сейчас я немного потерян.Любая помощь будет оценена.