我有一个名为Groups的字符串数组,其中包含以下两个字符串
控制器
public ActionResult Task(TaskModel model)
{
return PartialView(model);
}
调用我的任务操作的索引视图
<div id="update">
@using (Ajax.BeginForm("Task", "Home", new AjaxOptions { UpdateTargetId = "update", InsertionMode = InsertionMode.Replace}))
{
<input value="Group Alpha" name="Groups"/>
<input value="Group Bravo" name="Groups"/>
<button type="submit">Submit</button>
}
</div>
我的任务视图
@model MvcApplication4.Models.TaskModel
<div id="container">
@if (Model.Groups != null)
{
foreach (var group in Model.Groups)
{
@Html.TextBox("Groups", group, new { @id = String.Empty })
}
}
</div>
我的任务模型
public class TaskModel : IValidatableObject { public Guid TaskId { get; set; } public String Name { get; set; } public string[] Groups { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { yield break; } }
这只输出Group Alpha Group Alpha。问题是什么?
对不起之前不清楚
示例项目复制问题https://www.dropbox.com/s/s2o59cu00am3eov/MvcApplication4.zip
答案 0 :(得分:3)
您发布一些名为Groups
的输入字段。在处理该POST的操作方法中,您渲染使用@Html.TextBox("Groups", ...)
的部分。
@Html.TextBox
使用ModelState根据输入元素名称使用先前的POSTed值填充值。在这种情况下,它需要在POST中找到的第一个Groups
值,即&#34; Group Alpha&#34;。
在渲染局部视图之前清除ModelState(或只是组键)。
此:
ModelState.Clear();
ModelState.Remove("Groups");
return PartialView(model);
作品。
下次尝试预先显示所有相关代码,因此我们不需要这么多评论。 : - )
答案 1 :(得分:-1)
我认为这是一个封闭问题。试试这段代码:
<div id="container">
@if (Model.Groups != null)
{
foreach (var group in Model.Groups)
{
var currentGroup = group;
@Html.TextBox("Groups", currentGroup, new {@id = String.Empty});
}
}
</div>