Как взаимодействовать со списком <t>в MVC - PullRequest
4 голосов
/ 24 февраля 2010

У меня есть следующий код на мой взгляд

    <% foreach (var item in Model.stats)
       {%> 
       <label style="style="float:left;"><%= item.Stat_Caption %></label>
       <%=Html.TextBox(item.Stat_Caption,item.Stat_Value) %>

       <%} %>

Я пытаюсь превратить мой объект статистики, который является просто списком, в список текстовых полей, чтобы пользователь мог их обновить.

на котором я работаю, как мне, как только пользователь обновит текстовые поля, применить значения обратно к коллекции списков?

1 Ответ

5 голосов
/ 24 февраля 2010

Вам нужно обернуть текстовые поля в форму:

<% using (Html.BeginForm()) { %>
    <% foreach (var item in Model.stats)
       {%> 
       <label style="style="float:left;"><%= item.Stat_Caption %></label>
       <%=Html.TextBox(item.Stat_Caption,item.Stat_Value) %>

       <%} %>

    <input type="submit" value="Save" class="button" /></td>
<% } %>

Когда вы нажимаете кнопку отправки, он выполняет стандартный POST с парами ключ / значение следующим образом:

Box1 : Hello
Box2 : World

На стороне контроллера вам нужен метод, который получает запрос POST:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Entity entity)
{
    // code goes here
}

где Entity - ваш объект модели данных. Связыватель модели MVC по умолчанию использует отражение для заполнения полей вашей сущности, поэтому, если сущность была такой:

public class Entity()
{
    public string Box1 { get; set; }
    public string Box2 { get; set; }
}

Тогда для Box1 и Box2 будут установлены значения, отправленные в запросе POST.

Если у вас нет сущности, вы можете использовать это:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection)
{
    // code goes here
}

где collection - словарь объектов. Недостатком использования этого словаря является то, что это словарь типов Object, поэтому вам придется захватывать данные и приводить их к тому типу, который должен быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...