加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 我对Html.TextBoxFor的工作原理有什么误解

发布时间:2020-12-16 04:38:14 所属栏目:asp.Net 来源:网络整理
导读:我只想尝试使用新版本重新进入.NET MVC,我无法理解视图是否绑定到DataModel. 我有一个带有属性“first_name”的模型,在HTML表单中我有以下内容 %= Html.TextBox("first_name",Model.first_name)%%= Html.TextBoxFor(model = model.first_name) % input type=
我只想尝试使用新版本重新进入.NET MVC,我无法理解视图是否绑定到DataModel.

我有一个带有属性“first_name”的模型,在HTML表单中我有以下内容

<%= Html.TextBox("first_name",Model.first_name)%>
<%= Html.TextBoxFor(model => model.first_name) %> 
<input type="text" name="first_name" id="first_name" class="myLabel" 
       value="<%=Model.first_name %>" />

在控制器上的操作中,如果我在模型上设置first_name属性并执行此操作

mymodelObject.first_name = "Test";
return View(mymodelObject);

是什么原因只有第三个文本框获取此first_name值而另外两个没有?

编辑:

对不起,我可能还没有解释得这么好.想象一下,我有2个控制器方法 –

public ActionResult Register()
{
    Registration model = new Registration();
    model.first_name = "test";
    return View(model);
}

有了这个,任何一个绑定工作.

在显示之后,我单击表单上的一个按钮,然后尝试运行:

[HttpPost]
public ActionResult Register(Registration_ViewData model)
{
    model.first_name = "Steve";
    return View(model);
}

我问的是为什么第3个而不是第2个将“Steve”绑定为新名称.

解决方法

因为HTML帮助程序从ModelState读取值而不是从模型读取值.为了改变您的行为,您还需要使用ModelState.
(见: Changing model’s properties on postback)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读