HtmlTextBoxFor Loop в MVC 2 C # - PullRequest
       6

HtmlTextBoxFor Loop в MVC 2 C #

2 голосов
/ 11 августа 2010

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

У меня есть форма со списком текстовых полей ... Допустим, я хочу узнать "Ваши любимые пираты" и попросить вас перечислить все десять на странице с комментариями относительно того, почему они твой любимый

Итак, на мой взгляд, у меня есть:

for (int i =1; i <11; i++)         
{%>
    <%=Html.TextBoxFor(x => x.Pirate + i, new { size = 30, maxlength = 200 })%>
    <%=Html.TextAreaFor(x => x.PirateReason + i, new { cols = 42, rows = 2 })%>
    <%
}%> 

Но как мне установить это в моей модели?

Извините, если это не было конкретно.

В моей модели я просто хочу сохранить список пиратов, в примере, над которым я сейчас работаю, всего 10 пиратов, поэтому я мог бы сделать это так, если бы мне пришлось

public string Pirate1 { get; set; }
public string Pirate2 { get; set; }
public string Pirate3 { get; set; }
public string Pirate4 { get; set; }
public string Pirate5 { get; set; }
public string Pirate6 { get; set; }
public string Pirate7 { get; set; }
public string Pirate8 { get; set; }
public string Pirate9 { get; set; }
public string Pirate10 { get; set; }

Но это ужасно, что если я захочу узнать твоих любимых 100 Пиратов?

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

Большое спасибо за ваш совет ..

1 Ответ

1 голос
/ 11 августа 2010

Модель:

public class Pirate
{
    public int Id { get; set; }
    public string PirateReason { get; set; }
}

Действие контроллера:

public ActionResult Index()
{
    var model = Enumerable
        .Range(1, 11)
        .Select(i => new Pirate { 
            Id = i, 
            PirateReason = string.Format("reason {0}", i) 
        });
    return View(model);
}

Строго набранный вид до IEnumerable<Pirate>:

<%= Html.EditorForModel() %>

Шаблон редактора (~Views/Shared/EditorTemplates/Pirate.ascx):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SomeNs.Pirate>" %>
<%= Html.TextBoxFor(x => x.Id, new { size = 30, maxlength = 200 }) %>
<%= Html.TextAreaFor(x => x.PirateReason, new { cols = 42, rows = 2 }) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...