Asp.net mvc 如何使用对象列表创建多个文本框

Asp.net mvc 如何使用对象列表创建多个文本框,asp.net-mvc,razor,Asp.net Mvc,Razor,大家好,我必须创建一个共享内容页面,其中我有一个要共享的contentitem,共享它的用户和他想要与之共享的ppl的收件人,但我想动态执行,这是我的域模型 public class ShareContentItemModel : BaseModel { public ContentItem ContentItem { get; set; } public User User { get; set;} [Display(Name = "Recipients")]

大家好,我必须创建一个共享内容页面,其中我有一个要共享的contentitem,共享它的用户和他想要与之共享的ppl的收件人,但我想动态执行,这是我的域模型

public class ShareContentItemModel : BaseModel
{
    public ContentItem ContentItem { get; set; }
    public User User { get; set;}

    [Display(Name = "Recipients")]
    public List<Recipient> Recipients { get { return new List<Recipient> { new Recipient { Name = "Recipient name here", Email = "Write Recipient Email here" } }; } }

    [Required]
    [Display(Name = "Nachricht")]
    public string Message { get; set; }
}

public class Recipient{
    [Display(Name = "Recipient Name:")]
    public string Name  { get; set;}
    [Display(Name = "Recipient Email Address:")]
    public string Email { get; set;}
}
公共类ShareContentItemModel:BaseModel
{
公共ContentItem ContentItem{get;set;}
公共用户{get;set;}
[显示(Name=“收件人”)]
公共列表收件人{get{return new List{new Recipient{Name=“Recipient Name here”,Email=“Write Recipient Email here”};}
[必需]
[显示(Name=“Nachricht”)]
公共字符串消息{get;set;}
}
公共类收件人{
[显示(Name=“收件人姓名:”)]
公共字符串名称{get;set;}
[显示(Name=“收件人电子邮件地址:”)]
公共字符串电子邮件{get;set;}
}
这就是我的观点

 @using (Html.BeginForm("Submit", "Contact", FormMethod.Post))
 { 
 <p>Hi: @Html.DisplayTextFor(m=>m.User.Salutation) @Html.DisplayTextFor(m=>m.User.Firstname) @Html.DisplayTextFor(m=>m.User.Lastname)</p>            
<table border="0" style="padding:5">
    <tr>
        <td class="editor-label">@Html.LabelFor(m => m.ContentItem.Title): </td>
        <td class="editor-field">@Html.DisplayTextFor(m => m.ContentItem.Title)
            <div>@Html.ValidationMessageFor(m => m.ContentItem.Title)</div>  
        </td>
    </tr>
    <tr> 
        <td class="editor-label">@Html.LabelFor(m => m.ContentItem.Description): </td>
        <td class="editor-field">@Html.DisplayTextFor(m => m.ContentItem.Description)
            <div>@Html.ValidationMessageFor(m => m.ContentItem.Title)</div>  
        </td>
    </tr>
    <tr><td colspan="2">Recipients:</td></tr>
    @foreach (var item in @Model.Recipients)
    {
    <tr>
        <td>@item.Name: @Html.TextBoxFor(/*Dont know what to put in here*/)</td>
        <td>@item.Email: @Html.TextBoxFor(/*Dont know what to put in here*/) </td>
    </tr>    
    }
    <tr>
        <td>   <a class="small button" href="#">Add Recipient:</a> </td>
        <td><input type="submit" class="button med primary" style="float: right;" value="ABSENDEN" /></td>
    </tr>
</table>

 }   
@使用(Html.BeginForm(“提交”、“联系”、FormMethod.Post))
{ 
您好:@Html.DisplayTextFor(m=>m.User.saltation)@Html.DisplayTextFor(m=>m.User.Firstname)@Html.DisplayTextFor(m=>m.User.Lastname)

@LabelFor(m=>m.ContentItem.Title): @DisplayTextFor(m=>m.ContentItem.Title) @Html.ValidationMessageFor(m=>m.ContentItem.Title) @Html.LabelFor(m=>m.ContentItem.Description): @DisplayTextFor(m=>m.ContentItem.Description) @Html.ValidationMessageFor(m=>m.ContentItem.Title) 收件人: @foreach(@Model.Recipients中的var项) { @item.Name:@Html.TextBoxFor(/*不知道在这里放什么*/) @item.Email:@Html.TextBoxFor(/*不知道在这里放什么*/) } }
正如你在//中看到的,我不知道在这里放什么 我不能使用item.name或item.email属性,你能帮我吗

p、 对象很好cshtml呈现很好,我只需要创建这个文本框来开始创建更多的收件人


非常感谢

好的。这就是你如何做到的。您可以创建一个编辑器模板并使用它

步骤1)在视图/yourViewFolderName中创建一个名为“EditorTemplates”的文件夹

步骤2)创建一个名为
Receipent.cshtml的视图

将此代码添加到该文件中

@model YourNameSpace.Models.Recipient
<p>
   @Html.EditorFor(x=>x.Name) : @Html.TextBoxFor(x=>x.Name)
</p>
<p>
   @Html.EditorFor(x=>x.Email) : @Html.TextBoxFor(x => x.Email)
</p>
这应该行得通。我用你的模型做了测试


保持编辑器模板名称与要在foreach中显示的属性名称相同。MVC会处理剩下的事情。

好的。这就是你如何做到的。您可以创建一个编辑器模板并使用它

步骤1)在视图/yourViewFolderName中创建一个名为“EditorTemplates”的文件夹

步骤2)创建一个名为
Receipent.cshtml的视图

将此代码添加到该文件中

@model YourNameSpace.Models.Recipient
<p>
   @Html.EditorFor(x=>x.Name) : @Html.TextBoxFor(x=>x.Name)
</p>
<p>
   @Html.EditorFor(x=>x.Email) : @Html.TextBoxFor(x => x.Email)
</p>
这应该行得通。我用你的模型做了测试


保持编辑器模板名称与要在foreach中显示的属性名称相同。MVC将处理其余部分。

Compilerfehlermeldung:CS0411:无法从用法推断方法“System.Web.MVC.Html.LabelExtensions.LabelFor(System.Web.MVC.HtmlHelper,System.Linq.Expressions.Expression)”的类型参数。请尝试显式指定类型参数。@CarlosGuillermoBolañosLopez:我用一个经过测试的解决方案更新了我的答案。非常感谢!!Compilerfehlermeldung:CS0411:无法从用法推断方法“System.Web.Mvc.Html.LabelExtensions.LabelFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression)”的类型参数。请尝试显式指定类型参数。@CarlosGuillermoBolañosLopez:我用一个经过测试的解决方案更新了我的答案。非常感谢!!