如何解决使用TextBoxFor时,文本输入绑定中缺少单词“模型”
使用以下模型,并使用TextBoxFor,我发现html输入的Model
属性中缺少单词id
ModelView类:
public class ProductUpdateviewmodel
{
public Product NewItem { get; set; }
// more properties here
}
查看:
@using (Html.BeginForm("SaveProducts","Admin",FormMethod.Post,new { enctype = "multipart/form-data" }))
{
<div class="cssproduct" style="background-color:blue">
@Html.TextBoxFor(m => m.NewItem.Name)
</div>
}
HTML来源:
<input id="NewItem_Name" name="NewItem.Name" type="text" value="">
我希望看到name="Model.NewItem.Name"
用于文本输入,但是我看到name="NewItem.Name"
,这导致在回发获取模型时该输入的内容为空
控制器:
[HttpPost]
public ActionResult SaveProducts(ProductUpdateviewmodel model)
{
//model.NewItem.Name is null here
}
编辑:
如果我在View中使用下面的代码而不是TextBoxFor,它将正常工作
@Html.TextBox("Model.NewItem.Name")
我想念什么?
解决方法
我希望看到name =“ Model.NewItem.Name”
您为什么期望看到那个?这不是它的工作方式,绑定也不是。
要按预期方式查看它,应与以下内容绑定(由于模型中没有Model对象,这将失败):
@Html.TextBoxFor(m => m.Model.NewItem.Name)
不仅仅是因为您声明了方法变量ProductUpdateViewModel model
,但这并不意味着绑定名称应为name="Model.NewItem.Name"
。它应该是它的样子,绑定与方法参数名无关,它只需要一个对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。