質問

私は、カスタムクラスを持っています:

public class Person
{
    public String Name { get; set; }
    public Int32 Age { get; set; }
    public List<String> FavoriteFoods { get; set; }

    public Person()
    {
        this.FavoriteFoods = new List<String>();
        this.FavoriteFoods.Add("Jambalya");
    }
}

私は強く型付けされたビューにこのクラスを渡します:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcLearner.Models.Person>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
 Create
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Create</h2>

    <% using (Html.BeginForm()) { %>
        <%= Html.LabelFor(person => person.Name) %><br />
        <%= Html.EditorFor(person => person.Name) %><br />
        <%= Html.LabelFor(person => person.Age) %><br />
        <%= Html.EditorFor(person => person.Age) %><br />
        <%= Html.LabelFor(person => person.FavoriteFoods[0]) %><br />
        <%= Html.EditorFor(person => person.FavoriteFoods[0]) %>
    <% } %>

</asp:Content>
私は、ページを参照するとき、

そして、私はエラーメッセージで終わる:テンプレートは、専用フィールドとプロパティアクセサ式で使用することができます。グーグルのビットの後、私はEditorForとLabelFor機能のみをモデルオブジェクトの即時の性質を受け入れることができるので、これが起こると、FavoriteFoods [0]、即時性ではないことを考え出しました。誰もがコントロールの名前を指定する文字列を使用せずに、コードを動作させることになるの周りに仕事を持っていますか?でも可能ということですか?最適私は、入力のための制御の独自の名前を決定し、エディタを、必要とする項目にモデルから表現を使用したいと思います。

いくつかのより多くの事をしようと、私は、ビューに以下の変更を使用してこの作業を取得することができた。

<% using (Html.BeginForm()) { %>
    <%= Html.LabelFor(person => person.Name) %><br />
    <%= Html.EditorFor(person => person.Name) %><br />
    <%= Html.LabelFor(person => person.Age) %><br />
    <%= Html.EditorFor(person => person.Age) %><br />
    <% foreach (String FavoriteFoods in Model.FavoriteFoods) { %>
        <%= Html.LabelFor(food => FavoriteFoods) %><br />
        <%= Html.EditorFor(food => FavoriteFoods)%><br />
    <% } %>
    <input type="submit" value="Submit" />
<% } %>

EditorForとLabelForでの式の右辺は、あなたが移入すると、リストは基本型(すなわち文字列、のInt32など)である必要がありますしようとしているリストの正確な名前でなければならないことが注意することが重要です。私はしかし、複雑な型を使用しようとすると、それはまだ失敗します。私は、各プロパティの入力を備え、この人のクラスのリストを表示しようとしましたが、それだけで罰金、ブラウザにそれらのすべてが表示されますが、それは私のポストアクションにヌルリストを返します。どのように私は、リストの項目について入力の名前に表示する指標を得るのですか?

<のhref = "http://marcomagdy.wordpress.com/2009/09/03/asp-net-mvc-model-binding-form-inputs-to-action-parameters/" のrel = "nofollowをnoreferrer 「>これは何が起こっていたかを考え出す中に巨大な助けだった。に

役に立ちましたか?

解決

私は、これはFavoriteFoodsリストのためであると仮定します。それはASP.NET MVC v1の中で行われてきたどのようにこのような何かを持っていた。

<input type="hidden" name="FavouriteFoods.Index" value="0" />
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top