アプリケーションに 1 組のビューがあり、どちらもモデル アイテムの 1 つに対して同じエディター テンプレートを表示します。2 つのビュー (「追加」と「編集」) のうち、「編集」は正常に機能しますが、コントローラー アクションが投稿を処理するときに「追加」がモデルに対して null を返します。
「追加」ビューにカスタム ViewModel を与えて、Html.EditorFor(p => p.PageContent)
単に Model オブジェクト全体で EditorFor() を呼び出すのではなく呼び出すとHtml.EditorFor(p => p)
、フォームは正しい null 以外のモデルを返しますが、それに関連する他の問題が発生することがわかりました。クライアント側のスクリプトとコントロール 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) {}
泣く前に「重複」
この質問はこれに関連していますが、この質問は、そこで尋ねられるより一般的な質問ではなく、私が経験している特定の問題を対象とすることを目的としています。