Asp.net mvc 如何使用对象列表创建多个文本框
大家好,我必须创建一个共享内容页面,其中我有一个要共享的contentitem,共享它的用户和他想要与之共享的ppl的收件人,但我想动态执行,这是我的域模型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")]
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:我用一个经过测试的解决方案更新了我的答案。非常感谢!!