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

asp.net-mvc – ASP.NET MVC:在回发上更改模型的属性

发布时间:2020-12-15 23:16:22 所属栏目:asp.Net 来源:网络整理
导读:我一直在玩ASP.NET MVC,遇到了我无法想象的东西. 假设我有一个这样的对象: public class TestObject{ public string Name { get; set; } public int Age { get; set; }} 和一个视图页面(Create.aspx),如下所示: form action="/Create" method="post" p %=H
我一直在玩ASP.NET MVC,遇到了我无法想象的东西.

假设我有一个这样的对象:

public class TestObject
{
    public string Name { get; set; }
    public int Age { get; set; }
}

和一个视图页面(Create.aspx),如下所示:

<form action="/Create" method="post">
    <p>
        <%=Html.TextBox("Name") %>
    </p>
    <p>
        <%=Html.TextBox("Age")%>
    </p>
</form>

在我的控制器上我有这些行动:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Create()
{
    return View(new TestObject { Name = "DefaultName",Age = 10 } );
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(TestObject o)
{
    o.Name = "ChangedNameToSomethingElse";
    o.Age = 15;
    return View(o);
}

即使在回发之后,Html.TextBox()方法总是使用默认值来生成文本框,其中对象的值返回不同的属性.现在,我不能想到一个真实世界的例子,为什么我想做这样的事情,但我仍然不明白为什么我总是最终有文本框填充模型的值在创建动作与AcceptVerbs(HttpVerbs.Get)属性.

注意:我尝试过Html.TextBox(“Name”,Model.Name),但结果仍然相同.而且我验证了使用AcceptVerbs(HttpVerbs.Post)创建操作实际上是通过ViewData将值传递给View来运行的.
此外,当我输出值为&%= Model.Name%>但再次,不在文本框上.

有没有什么明显的我失踪了,还是有这个行为背后的推理?

解决方法

如果您通过方法声明或UpdateModel或TryUpdateModel将绑定的结果绑定到诸如TestObject的对象,则将使用这些值填充名为ModelState的属性. HTML帮助器(如Textbox)将始终与显式传递的模型对象绑定到modelstate.

(编辑:李大同)

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

    推荐文章
      热点阅读