【发布时间】:2011-08-19 19:26:25
【问题描述】:
我有一个代表描述字段的文本区域。描述有逗号,因此在尝试拆分字段的描述时,无法正确解析数据。如何正确获取每一行的描述。
var DescList = FormValues["Item.Description"].Split(',').Select(item => item).ToList<string>();
//will not work for obvious reasons. Comma delimited FormCollection has commas to identify separate row data.
微软在设计 FormsCollection 时似乎没有考虑 textarea 控件。尝试访问每个值时,带有逗号的文本区域将不起作用。有趣的是 _entriestables 属性具有完美的格式,但他们选择将其设为私有属性。非常沮丧。
`
Here is the important part of my viewmodel.
public class TenantViewModel
{
public Tenant Tenant { get; set; }
public Site Site { get; set; }
}
我的视图是这样填充的:
if (Model != null && Model.Tenant != null && Model.Tenant.Site != null && Model.Tenant.Site.Count() > 0)
{<div class="detailsbox_view">
<table id="tblTenantSites">
<tr>
<th>@Html.LabelFor(item => item.Site.Title)</th>
<th>@Html.LabelFor(item => item.Site.Description)</th>
</tr>
@foreach (var Item in Model.Tenant.Sites)
{
<tr>
@Html.HiddenFor(modelItem => Item.SiteId)
<td>
@Html.EditorFor(modelItem => Item.Title)
</td>
<td>
@Html.TextAreaFor(modelItem => Item.Description, new {@width="400" })
</td>
</tr> }
</table>
如您所见,此站点表是租户对象的子对象。此子记录不会使用此方法自动更新,但租户数据会自动更新。这就是我尝试使用 FormColelction 的原因。 有什么我缺少的东西来完成这项工作吗?
【问题讨论】:
-
你能发布一个你的模型和输入的例子吗?
-
没有理由使用
FormValues['whatever']。您应该将模型提交回控制器 -
你能发布你的视图吗?
-
谢谢。我刚刚更新了我的问题。
-
我猜你让你的用户能够在一个视图/页面中编辑多个网站的描述。您遇到了集合绑定问题,这是新 MVC 开发人员常见的问题。如果您只是决定一次只允许用户编辑一个站点,则可以轻松避免这种情况。而且,恕我直言,它还将提供更好的用户体验。
标签: asp.net-mvc formcollection