大家好,我必须创建一个共享页面,我有一个要分享的contentitem,分享它的用户和他想与之分享的用户的收件人,但我想动态,这是我的域模型
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;}
}
这是我的观点
@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>
}
你可以在//中看到这里不知道要放什么 我不能使用item.name或item.email属性,你可以帮我这个
Pd积。对象很好,cshtml渲染正常,我只需创建此文本框即可开始创建更多收件人。
非常感谢
答案 0 :(得分:3)
行。所以这就是你如何做到的。您可以创建编辑器模板并使用它。
步骤1)创建一个名为&#34; EditorTemplates&#34;的文件夹。在您的View / yourViewFolderName
中 步骤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>
步骤3)在主视图中,只需调用编辑器模板而不是foreach循环代码
@Html.EditorFor(x=>x.Recipients)
这应该可以正常工作。我测试了你的模型。
保持编辑器模板名称与要在foreach中显示的属性名称相同。 MVC将负责其余的工作。