我正在尝试做一些我认为相对简单但无法使其正常工作的事情,这对某些指针将很有帮助。

我有一个带有文本框列表的表格……可以说,我想找出“您最喜欢的海盗”,并让您在页面上列出所有十个盗版者,并附上评论为什么它们是您的最爱。

因此,我认为:

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名海盗该怎么办?

我想将海盗存储在模型中,以便将它们弹出到数据库中或作为电子邮件发送...

非常感谢您的建议。

最佳答案

模型:

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 }) %>

07-27 13:34