asp.net-mvc - MVC2 将模型付诸行动

标签 asp.net-mvc

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

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

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

我将完整的模型从另一个操作发送到 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 检查后操作的内容即可接收该操作)。

因此,任何未从浏览器接收到的内容都是 null。

P.D.注意:我从你的问题中得知你是从 MVC 开始的,如果你实际上知道我所说的一切并且遇到了更复杂的问题,那么抱歉! :P

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

相关文章:

.net - 使用 Rotativa 将 PDF 文件保存为字节数组或流

asp.net-mvc - MVC表格网格发布表格并逐行读取

javascript - 不断出现 AngularJS 模块不可用的情况 (ASP.NET 5)

asp.net-mvc - 如何使用 ASP.NET MVC 3 编辑 IEnumerable<T>?

javascript - 如何从自动完成而不是文本中发布值?

c# - 命名空间 'X' 中不存在类型或命名空间名称 'Y' - 在 VS 生成的代码中

asp.net-mvc - 在 ASP.NET MVC Razor 中从数据库文本创建链接

asp.net-mvc - 与其他字段一起将文件上传为表单的一部分

javascript - 点击按钮时,knockout.js 在 vi​​ewmodel2 中从 viewmodel1 进行更改

c# - 如何在客户端不发送任何请求的情况下从 Windows Azure 服务器向客户端移动应用程序(iOS)发送消息?