asp.net – 对于每个循环都有控件并在MVC 4中提交表单(Html.BeginForm)
发布时间:2020-05-24 12:43:09 所属栏目:asp.Net 来源:互联网
导读:在我的视图模型中,我有一个对象列表.我迭代这些对象,并为每个对象创建控件.在下面的情况中,我想向人们展示每个对象的文本框和按钮.当用户单击该按钮时,会发布一个帖子,我可以将数据保存在我的控制器中. 在UI中,用户可以更改他们想要的表单,然后单击“保存”.
|
在我的视图模型中,我有一个对象列表.我迭代这些对象,并为每个对象创建控件.在下面的情况中,我想向人们展示每个对象的文本框和按钮.当用户单击该按钮时,会发布一个帖子,我可以将数据保存在我的控制器中. 在UI中,用户可以更改他们想要的表单,然后单击“保存”. 我的问题是当模型发布到控制器时模型为空. 我的剃刀代码: using (Html.BeginForm())
{
foreach (var contributor in Model.Contributor)
{
@Html.HiddenFor(model => contributor.Id)
<div class="formrow">
@Html.ValidationSummary(true)
</div>
<h2>@Html.TextRaw("AuthorInfo","Author")</h2>
<div class="formrow">
@Html.EditorFor(model => contributor.FirstName)
<div class="formvalidation">
@Html.ValidationMessageFor(model => contributor.FirstName)
</div>
</div>
<div class="formrow right">
<input type="hidden" name="formsubmitted" value="true" />
<input type="submit" class="button" value="@Html.Text("ButtonText","Save")" />
</div>
}
}
我的视图模型代码 public class ProfileModel
{
public string Message { get; set; }
public List<PublisherModel> Publisher { get; set; }
public List<ContributorModel> Contributor { get; set; }
public ContributorModel NewContributor { get; set; }
}
我的控制器代码 [HttpPost]
public ActionResult Mine(ProfileModel model,string newuser)
{
//
}
怎么解决? 我想我必须扩展我的视图模型,以某种方式存储更改.但我真的看不出怎么样. 现在,ProfileModel中的所有属性在到达控制器时都为null. 有任何想法吗? 解决方法基本上问题是默认模型绑定器无法在foreach循环中正确绑定集合项.换句话说,它错误地命名元素,这就是集合在参数中显示为null的原因.我确信有各种不同的解决方法,帮助器和东西,但我不熟悉那些,所以我只是使用for循环而不是foreach,这样元素被正确命名. 试试这个: @for (int i = 0; i < Model.Contributor.Count(); i++)
{
@Html.HiddenFor(model => Model.Contributor[i].Id)
<div class="formrow">
@Html.ValidationSummary(true)
</div>
<h2>@Html.TextRaw("AuthorInfo","Author")</h2>
<div class="formrow">
@Html.EditorFor(model => Model.Contributor[i].FirstName)
<div class="formvalidation">
@Html.ValidationMessageFor(model => Model.Contributor[i].FirstName)
</div>
</div>
<div class="formrow right">
<input type="hidden" name="formsubmitted" value="true" />
<input type="submit" class="button" value="@Html.Text("ButtonText","Save")" />
</div>
}
我建议您使用调试工具来查看元素是否具有正确的name属性,在您的情况下,它们应该看起来像Contributor [0] .Id,Contributor [0] .FirstName等. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 尝试继承RegularExpressionAttribute,不再验
- asp.net-mvc – 具有引导Navbar的MVC – 将所选项目设置为活
- asp.net – 可以在Web.config中配置一个位置,只允许本地连接
- asp.net-mvc – 为什么DisplayFormat DataFormatString不工
- asp.net-mvc-3 – 从自定义授权属性访问角色
- asp-classic – 如何将字符串转换为日期时间格式的经典asp
- 如何在ASP.NET生成的Word文件中嵌入图像
- asp.net – 如何强制web API来识别querystring参数
- asp.net CustomValidator从不触发OnServerValidate
- asp.net-mvc – MicrosoftMvcValidation.js VS jquery.vali
