asp.net-mvc中ASP.NET MVC模型绑定器如何解决常见的问题和挑战?

2026-03-30 13:111阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计657个文字,预计阅读时间需要3分钟。

asp.net-mvc中ASP.NET MVC模型绑定器如何解决常见的问题和挑战?

使用此控制器方法,您可以通过以下方式访问:

`[AcceptVerbs(HttpVerbs.Post)]``public ViewResult Contact(Contact contactMessage) {``return View();``}`

这样做的理由是:

在 `Contact` 类中定义了属性 `Name` 和 `Email`,这些属性被声明为 `public`,这意味着它们可以被外部访问。这通常用于从客户端接收数据。当使用 `AcceptVerbs(HttpVerbs.Post)` 特性时,指定了该方法只接受 POST 请求,这是在客户端通过表单提交数据时常用的 HTTP 方法。通过在方法中返回 `View()`,意味着在成功接收数据后,将返回一个视图(通常是用于展示表单提交结果的页面)。

使用此控制器方法: –

[AcceptVerbs(HttpVerbs.Post)] public ViewResult Contact(Contact contactMessage) { return View(); }

为什么这样做……

public class Contact { public string Name { get; set; } public string Email { get; set; } public string Message { get; set; } } <% using(Html.BeginForm()) { %> <p>Name : <%= Html.TextBox("Name")%></p> <p>Email : <%= Html.TextBox("Email")%></p> <p>Message : <%= Html.TextBox("Message")%></p> <p><input type="submit" value="Send Data" /></p>

但这不是吗?

public class Contact { public string ContactName { get; set; } public string ContactEmail { get; set; } public string ContactMessage { get; set; } } <p>Name : <%= Html.TextBox("ContactName")%></p> <p>Email : <%= Html.TextBox("ContactEmail")%></p> <p>Message : <%= Html.TextBox("ContactMessage")%></p> <p><input type="submit" value="Send Data" /></p>

请不要告诉我,字段名称只是部分识别?

相信我 – 我所做的只是将“联系人”文本添加到对象中的每个字段和表单中的每个字段.它几乎就像MVC混淆了所有以相同的前7个字符开头的字段.

是什么赋予了 ?

任何人都可以对此有所了解吗?

保罗.

我目前找不到任何合理的解释,为什么第二个不起作用.但是,如果您将操作签名更改为如下所示:

public ViewResult Index([Bind(Prefix="")]Contact contactMessage)

我想这与DefaultModelBinder有关.

asp.net-mvc中ASP.NET MVC模型绑定器如何解决常见的问题和挑战?

更新:
好的,这开始真的很有趣:

// Not working public ViewResult Index(Contact contactMessage) // Not working public ViewResult Index(Contact contactmessage) // Working public ViewResult Index(Contact contact) // Working public ViewResult Index(Contact contactMsg) // Working public ViewResult Index(Contact abc)

确实很奇怪!

UPDATE2:

好的,我知道了.您的模型中有一个名为ContactMessage的属性,该操作中传递的变量名称也称为contactMessage.这就是模糊性的来源. DefaultModelBinder中没有错误.他不能同时绑定类型为string和Contact的属性,关闭案例:-)

本文共计657个文字,预计阅读时间需要3分钟。

asp.net-mvc中ASP.NET MVC模型绑定器如何解决常见的问题和挑战?

使用此控制器方法,您可以通过以下方式访问:

`[AcceptVerbs(HttpVerbs.Post)]``public ViewResult Contact(Contact contactMessage) {``return View();``}`

这样做的理由是:

在 `Contact` 类中定义了属性 `Name` 和 `Email`,这些属性被声明为 `public`,这意味着它们可以被外部访问。这通常用于从客户端接收数据。当使用 `AcceptVerbs(HttpVerbs.Post)` 特性时,指定了该方法只接受 POST 请求,这是在客户端通过表单提交数据时常用的 HTTP 方法。通过在方法中返回 `View()`,意味着在成功接收数据后,将返回一个视图(通常是用于展示表单提交结果的页面)。

使用此控制器方法: –

[AcceptVerbs(HttpVerbs.Post)] public ViewResult Contact(Contact contactMessage) { return View(); }

为什么这样做……

public class Contact { public string Name { get; set; } public string Email { get; set; } public string Message { get; set; } } <% using(Html.BeginForm()) { %> <p>Name : <%= Html.TextBox("Name")%></p> <p>Email : <%= Html.TextBox("Email")%></p> <p>Message : <%= Html.TextBox("Message")%></p> <p><input type="submit" value="Send Data" /></p>

但这不是吗?

public class Contact { public string ContactName { get; set; } public string ContactEmail { get; set; } public string ContactMessage { get; set; } } <p>Name : <%= Html.TextBox("ContactName")%></p> <p>Email : <%= Html.TextBox("ContactEmail")%></p> <p>Message : <%= Html.TextBox("ContactMessage")%></p> <p><input type="submit" value="Send Data" /></p>

请不要告诉我,字段名称只是部分识别?

相信我 – 我所做的只是将“联系人”文本添加到对象中的每个字段和表单中的每个字段.它几乎就像MVC混淆了所有以相同的前7个字符开头的字段.

是什么赋予了 ?

任何人都可以对此有所了解吗?

保罗.

我目前找不到任何合理的解释,为什么第二个不起作用.但是,如果您将操作签名更改为如下所示:

public ViewResult Index([Bind(Prefix="")]Contact contactMessage)

我想这与DefaultModelBinder有关.

asp.net-mvc中ASP.NET MVC模型绑定器如何解决常见的问题和挑战?

更新:
好的,这开始真的很有趣:

// Not working public ViewResult Index(Contact contactMessage) // Not working public ViewResult Index(Contact contactmessage) // Working public ViewResult Index(Contact contact) // Working public ViewResult Index(Contact contactMsg) // Working public ViewResult Index(Contact abc)

确实很奇怪!

UPDATE2:

好的,我知道了.您的模型中有一个名为ContactMessage的属性,该操作中传递的变量名称也称为contactMessage.这就是模糊性的来源. DefaultModelBinder中没有错误.他不能同时绑定类型为string和Contact的属性,关闭案例:-)