gpt4 book ai didi

asp.net-mvc - MVC2 发布模型到行动

转载 作者:行者123 更新时间:2023-12-04 06:41:42 25 4
gpt4 key购买 nike

我将模型从强局部 View 发布到 Controller ,如下所示:

[AcceptVerbs(HttpVerbs.Post)]
[Authorize]
public string ProcessRequest(Request request)
{
.
.
.

但是,模型到达 Action 但它不完整,即请求的复杂属性为空。

我将完整的模型从另一个操作发送到 View ,更改属性并发布到 ProcessRequest 操作,该操作接收不完整的内容。

有谁知道这里可能是什么问题?

谢谢!

View 声明:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Models.Request>" %>...

属性绑定(bind):
<% using (Ajax.BeginForm("ProcessRequest", Model, new AjaxOptions { HttpMethod = "post" }, new { id = "ajaxForm" }))
{%>

<%= Html.TextArea("ReplyContent", Model.Reply.ReplyContent, new { cols="100"})%><br />...

最佳答案

基本上,MVC 所做的是获取正在提交的表单的所有输入的值,以及来自 URL 的所有参数,创建一个您希望接收的类型的新对象,并分配它的值。

因此,假设表单具有输入“FirstName”、“LastName”和“PhoneNumber”。您的操作中会发生的情况等价于:

Request request = new Request();
request.FirstName = ReceivedValues["FirstName"] // Note that this is pseudocode, I'm making up the name for the "ReceivedValues" dictionary
request.LastName = ReceivedValues["LastName"]
(...)

这就是您将在请求对象中获得的内容(显然,不会分配模型中不存在的任何接收到的值)。

无论您将原始模型发送到 View 时包含什么,一旦它进入浏览器并返回到您的操作(在发布表单之后),只有那些接收到的值仍然存在(您可以看到操作是什么值只需使用 Firebug 来检查您的 post 操作的内容即可接收)。

因此,没有从浏览器接收到的任何东西都是空的。

PD注意:我从你的问题中得知你是从 MVC 开始的,如果你真的知道我所说的一切并且遇到了更复杂的问题,对不起! :P

关于asp.net-mvc - MVC2 发布模型到行动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com