0

ひひ、

このクラスとのモデルバインディングに問題があります(抽象ではなく、次の具象)。基本的なプロパティ、つまりバインドしたいリストは無視してください。

public abstract class MessageModel
{
    public string Tag { get; set; }
    public string Message { get; set; }
    public int Id { get; set; }
    public const int DefaultIdValue = Int32.MinValue;

    public List<LinkModel> Linked { get; set; }
    public List<LinkModel> NotLinked { get; set; }

    protected MessageModel()
    {
        Id = DefaultIdValue;
        Linked = new List<LinkModel>();
        NotLinked = new List<LinkModel>();
    }

    protected MessageModel(string tag, string message):this()
    {
        Tag = tag;
        Message = message;
    }
}

public class TextModel:MessageModel
{
        public int TextId { get; set; }

        public TextModel()
        {
                TextId = DefaultIdValue;
        }
}

これは、送信時にサーバー側で取得する送信です(正気のためにフォーマットされています)。

Tag=
&Message=
&NotLinked.index=35fda83a053645e6809bbb8b0ea00103
&NotLinked.index=14c2e286e28b4c9d8f889fb3eb437e5f
&NotLinked.%5b35fda83a053645e6809bbb8b0ea00103%5d.RecipientId=1
&NotLinked.%5b35fda83a053645e6809bbb8b0ea00103%5d.RecipientName=Bob+Biggins
&NotLinked.%5b14c2e286e28b4c9d8f889fb3eb437e5f%5d.RecipientId=2
&NotLinked.%5b14c2e286e28b4c9d8f889fb3eb437e5f%5d.RecipientName=Billy+Oswold
&Submit=Submit

そのモデルを受け入れる関数が呼び出されると、NotLinkedコレクションはnullに設定されます。D:

(関連する)出力htmlは次のようになります(私は次のように「偽の」バインドを試みています:

<ol> and <li> 

jQueryが物を動かす作業をしている)

<div id="NotLinkedContainer">
    <ol id="NotLinked" name="NotLinked" style="width: 500px;height: 200px">
        <li value="1">Bob Biggins
            <input id="NotLinked_index" name="NotLinked.index" type="hidden" value="a0ab331bee2a461084b686e13a87090b" />
            <input id="NotLinked__a0ab331bee2a461084b686e13a87090b__RecipientId" name="NotLinked.[a0ab331bee2a461084b686e13a87090b].RecipientId" type="hidden" value="1" />
            <input id="NotLinked__a0ab331bee2a461084b686e13a87090b__RecipientName" name="NotLinked.[a0ab331bee2a461084b686e13a87090b].RecipientName" type="hidden" value="Bob Biggins" />
        </li>
        <li value="2">Billy Oswold
            <input id="NotLinked_index" name="NotLinked.index" type="hidden" value="d7d294d3174c4bd98d583e92010359e7" />
            <input id="NotLinked__d7d294d3174c4bd98d583e92010359e7__RecipientId" name="NotLinked.[d7d294d3174c4bd98d583e92010359e7].RecipientId" type="hidden" value="2" />
            <input id="NotLinked__d7d294d3174c4bd98d583e92010359e7__RecipientName" name="NotLinked.[d7d294d3174c4bd98d583e92010359e7].RecipientName" type="hidden" value="Billy Oswold" />
        </li>
    </ol>
</div>

何か案は?この種の複雑なバインディングをこれまでに行ったことがないので、おそらく私が犯した単純な間違いに戸惑っています。

4

1 に答える 1

1

括弧の前のドット表記を削除してみてください。これは辞書ではなくリストであるため、キーではなくインデックスを使用する必要があります。Razor ビューのリストの正しい構文は、次のようになります。

<div id="NotLinkedContainer">
    <ol id="NotLinked" name="NotLinked" style="width: 500px;height: 200px">
        <li value="1">Bob Biggins
            <input id="NotLinked_index" name="NotLinked.index" type="hidden" value="a0ab331bee2a461084b686e13a87090b" />
            <input id="NotLinked__a0ab331bee2a461084b686e13a87090b__RecipientId" name="NotLinked[0].RecipientId" type="hidden" value="1" />
            <input id="NotLinked__a0ab331bee2a461084b686e13a87090b__RecipientName" name="NotLinked[0].RecipientName" type="hidden" value="Bob Biggins" />
        </li>
        <li value="2">Billy Oswold
            <input id="NotLinked_index" name="NotLinked.index" type="hidden" value="d7d294d3174c4bd98d583e92010359e7" />
            <input id="NotLinked__d7d294d3174c4bd98d583e92010359e7__RecipientId" name="NotLinked[1].RecipientId" type="hidden" value="2" />
            <input id="NotLinked__d7d294d3174c4bd98d583e92010359e7__RecipientName" name="NotLinked[1].RecipientName" type="hidden" value="Billy Oswold" />
        </li>
    </ol>
</div>

あなたがやろうとしていることをカバーする記事は次のとおりです。

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

于 2013-01-23T18:49:42.493 に答える