繁体   English   中英

没有模型绑定的控制器操作方法中如何使用文本框值?

[英]How textbox values are available in controller action method without model binding?

我知道当我们将模型绑定到视图时,文本框值将在操作方法中可用。

@model SecurityDemoMVC.Models.UserModel

在登录视图中,您可以看到没有模型绑定。 当我们在文本框中使用相同的属性(用户名和用户密码)名称时,文本框值在登录操作方法中仍然可用。 当我们不将模型绑定到视图时它是如何工作的?

在此处输入图像描述

登录.cshtml

在此处输入图像描述 家庭控制器.cs

在此处输入图像描述 用户模型.cs

Html.TextBox是一个扩展,它仍然创建一个输入元素,其name属性与作为参数InputExtensions.TextBox传递给方法的字符串匹配。 由于包含在表单中,因此需要将name属性与端点参数属性名称进行匹配。 因为在您的情况下, name属性等于模型的属性名称,并且该方法通过将值传递回控制器的表单正确调用。

所有Html辅助方法所做的就是将您的 Razor 转换为Html

Html.TextBox("someproperty", null, new{}); Html.TextBoxFor(a => Model.someproperty, new {}); , 两者都创建等价于

<input name="someproperty" (if new {} != null, other attributes) />

MSDN对模型绑定的解释:

控制器和 Razor 页面处理来自 HTTP 请求的数据。 例如,路由数据可能会提供记录键,而发布的表单字段可能会提供模型属性的值。 编写代码来检索每个这些值并将它们从字符串转换为 .NET 类型将是乏味且容易出错的。 模型绑定使这个过程自动化。 模型绑定系统:

从各种来源检索数据,例如路由数据、表单字段和查询字符串。 在方法参数和公共属性中向控制器和 Razor 页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型的属性。

简而言之,Html Helper Methods 自动为您创建关联的 Html 元素的过程,而不是您自己创建 Html 元素。

模型绑定

您可能在调用它可能从那里获取的视图时传递了这些值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM