微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用TextBoxFor时,文本输入绑定中缺少单词“模型”

如何解决使用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 举报,一经查实,本站将立刻删除。