Hi Folks有人在2天前帮助我一个解决方案,使用编辑器模板使用razor从域模型中的列表生成多个文本框,然后我放了一些js,使它更具动态性,但是当我调用控制器中的action方法,它不刷新文本字段中的值,我会在这里放一些代码,也许你知道问题是什么。
这是我想要实现的目标
//AntiBot Field
public string Customer { get; set; }
public int ContentItemId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public int UserId { get; set; }
public string Salutation { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public string Email { get; set; }
[Display(Name = "Recipients")]
public List<Recipient> Recipients { get
{ return new List<Recipient>
{
new Recipient { Name = "", Email = "" },
//x10
};
}
}
[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:")]
[DataType(DataType.EmailAddress)]
public string Email { get; set;}
}
此输入字段中的每一个都具有此属性 所以我有十个字段,每个字段都有一个ID Recipient_(1_10)_Name / Email
这是我的观点
@using (Html.BeginForm("Submit", "Share"))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.UserId)
@Html.HiddenFor(m => m.ContentItemId)
@Html.TextBoxFor(m => m.Customer, new { @class = "b2a534d1" })
<p>Hi: @Html.DisplayTextFor(m => m.Salutation) @Html.DisplayTextFor(m => m.Firstname) @Html.DisplayTextFor(m => m.Lastname)</p>
<table border="0" style="padding:5">
<tr>
<td class="editor-label">@Html.LabelFor(m => m.Title): </td>
<td class="editor-field">@Html.DisplayTextFor(m => m.Title)
</td>
</tr>
<tr>
<td class="editor-label">@Html.LabelFor(m => m.Description): </td>
<td class="editor-field">@Html.DisplayTextFor(m => m.Description)
</td>
</tr>
<tr>
<td>@Html.LabelFor(m => m.Message)</td>
<td>@Html.TextAreaFor(m => m.Message)</td>
</tr>
</table>
<table >
@Html.EditorFor(m => m.Recipients)
</table>
<table>
<tr>
<td>
<a href="#" id="add-recipient" class="small button">Add Recipient</a></td>
<td><input type="submit" class="button med primary" style="float: right;" value="ABSENDEN" /></td>
</tr>
</table>
}
这是我的收件人
@model PetterLetter.Application.Models.Recipient
<p class="recipient"> Name: @Html.EditorFor(x=>x.Name) Email: @Html.EditorFor(x => x.Email) </p>
在调试解决方案之后,这就是我从视图模型中得到的结果。
此收件人应该在编辑器模板的输入字段中输入值
我做错了什么?
答案 0 :(得分:0)
我遇到了动态加载表单的类似问题,可以从Phil Haack's post.收集解决方案
结果是,当您加载多个这些表单时,必须为它们分配不同的索引值(每次都不是[0])。
我通过使用集合索引的隐藏字段并为其分配唯一值来解决此问题。它可以是任何实际的东西,比如日期时间字符串,只要索引值也用在每个输入名称中。阅读链接的帖子,特别是非顺序索引部分。