0

EditorFor( model lambda, "viewTemplateName") を使用すると、出力がまったく期待どおりになりません。これによりエラーは発生しませんが、マークアップなしで出力がレンダリングされます。私は何を間違っていますか?

出力:

HarryTomRichard

期待される出力 (id の List [] インデックスもレンダリングする方法を理解する必要がありますが、まだその問題は解決していません):

<table>
    <tr><td><span><input type="Text" id="Name[0]" value="Harry" /></span></td></tr>
    <tr><td><span><input type="Text" id="Name[1]" value="Tom" /></span></td></tr>
    <tr><td><span><input type="Text" id="Name[2]" value="Richard" /></span></td></tr>
</table>

私のクラス:

namespace Marcs.Models {
    public class Student   { public string Name { get; set; } }
    public class Classroom { public List<Student> Students { get; set; }
}

私のコントローラー:

public ActionResult Index() {
    var myStudents = new List<Student>();
    myStudents.Add(new Student { Name = "Harry" });
    myStudents.Add(new Student { Name = "Tom" });
    myStudents.Add(new Student { Name = "Richard" });
    var myClass = new Classroom {Students = myStudents};
    return View(myClass);
}

私のインデックス ビュー:

Inherits="System.Web.Mvc.ViewPage<Marcs.Models.Classroom>" %>
<% using (Html.BeginForm()) { %>
    <%= Html.EditorFor(m => m.Students, "Classroom") %>
    <input type="submit" value="Save" />
<% } %>

My Classroom Template (モデルではなくアイテムを使用できるように、m => アイテムに注意してください):

Inherits="System.Web.Mvc.ViewUserControl<List<Marcs.Models.Student>>" %>
<table>
    <% foreach (Marcs.Models.Student item in Model)
    { %><tr><td><%= Html.EditorFor(m => item, "Student")%></td></tr><%
    } %>
</table>

私の生徒のテンプレート:

Inherits="System.Web.Mvc.ViewUserControl<Marcs.Models.Student>"
%><span><%= Html.Encode( Html.EditorFor( m => m.Name)) %></span>
4

1 に答える 1

0

jfar には答えがあり、追加するときに適切にマークします。解決策は、ファイルが Views->ControllerName->EditorTemplates および Views->ControllerName->DisplayTemplates にあることを確認するだけでした。これらは、共有フォルダーにも配置できます。

この投稿が好きです。次に、コレクションを参照する MVC 2 テンプレート Html ヘルパーの使用方法を学ぶ必要があります。MVC 2 RC にあります。

于 2010-02-21T18:33:46.647 に答える