我的应用程序中有一对视图,它们都为我的一个模型项显示相同的编辑器模板;在两个视图(“添加”和“编辑”)中,“编辑”工作正常,但是当我的控制器操作处理帖子时,“添加”为模型返回 null。
我发现如果我给“添加”视图一个自定义 ViewModel 并调用Html.EditorFor(p => p.PageContent)
而不是简单地调用整个 Model 对象上的 EditorFor() Html.EditorFor(p => p)
,那么表单会返回正确的非空模型,但这会产生与我的客户端脚本和控件 ID(因为现在所有字段都以“PageContent_”为前缀)。我在整个应用程序的几个不同地方使用了相同的编辑器模板技术,而其他人都没有表现出对 ViewModel 的这种奇怪的依赖。
有没有其他人遇到过类似的问题?
编辑视图
<%@ Page Title="" Language="C#" MasterPageFile="~/Areas/Admin/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<PageContent>" %>
<% using (Html.BeginForm())
{ %>
<%=Html.Hidden("PageID", Model.Page.ID) %>
<%=Html.EditorFor(p => p)%>
<input type="submit" name="btnSave" value="Save" />
<input type="submit" name="btnCancel" value="Cancel" class="cancel" />
<% }
行动(工作)
[HttpPost, ValidateInput(false)]
public ActionResult EditContent(int id, FormCollection formCollection) {}
添加视图
<%@ Page Title="" Language="C#" MasterPageFile="~/Areas/Admin/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<PageContent>" %>
<% using (Html.BeginForm())
{ %>
<%=Html.Hidden("PageID", ViewData["PageID"]) %>
<%=Html.EditorFor(p => p)%>
<input type="submit" name="btnSave" value="Save" />
<input type="submit" name="btnCancel" value="Cancel" class="cancel" />
<% } %>
行动(失败)
// content is ALWAYS null
[HttpPost, ValidateInput(false)]
public ActionResult AddContent(PageContent content, FormCollection formCollection) {}
在你哭“重复”之前
这个问题确实与这个有关,但这个问题旨在针对我遇到的具体问题,而不是那里提出的更一般的问题。