1

次のような強く型付けされたViewDataを使用するビューがあります。

namespace Site.web2.Models
{
    public class MySubData
    {
        public string Note { get; set; }
        public bool IsValid { get; set; }
    }
    public class MyViewData
    {
        public int DataId { get; set;}
        public List<MySubData> SubData { get; set; }

        public MyViewData()
        {
        }

        public void LoadDummyData()
        {
            DataId = 42;
            SubData = new List<MySubData>();
            SubData.Add(new MySubData() { Note = "Item 1" });
            SubData.Add(new MySubData() { Note = "Item 2" });
        }
    }
}

コントローラ:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Test1()
{
    Site.web2.Models.MyViewData data = new Site.web2.Models.MyViewData();
    data.LoadDummyData();
    return View(data);
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Test1(Site.web2.Models.MyViewData data)
{
    return RedirectToAction("Index");
}

そして、ビューは次のようになります。

<%@ Page Title="" Language="C#" MasterPageFile="~/Content/Site.Master"
     Inherits="System.Web.Mvc.ViewPage<Site.web2.Models.MyViewData>"
%>
<%= Html.BeginForm<HomeController>(c => c.Test1(null)) %>
<p>Id:</p>
<p><%= Html.TextBox("DataId")%></p>
<p>Note 1:</p>
<p><%= Html.TextBox("SubData[0].Note")%></p>
<p>Note 2:</p>
<p><%= Html.TextBox("SubData[1].Note")%></p>

<input type="submit" value="Submit" />
<% Html.EndForm(); %>

わかりました。MyViewDataを作成してLoadDummyData()を呼び出し、それをビューで使用すると、TextBoxにデータが表示されません。

面白いことに、TextBoxにデータを入力すると、Postコントローラーで返されたMyViewDataにデータが入力されます。

私は何が間違っているのですか?これはMVCの新しいバージョンで修正されましたか?私はRC1を持っていると思います。

キース

アップデート1

これ

<%= Html.TextBox("DataId")%>

うまく動作します。私の質問は、これが必要だと思います

<%= Html.TextBox("SubData[0].Note")%>

同じように動作しますか?

4

1 に答える 1

1

これを試して:

<p>Id:</p>
<p><%= Html.TextBox("DataId", Model.DataId)%></p>
<p>Note 1:</p>
<p><%= Html.TextBox("SubData[0].Note", Model.SubData[0].Note)%></p>
<p>Note 2:</p>
<p><%= Html.TextBox("SubData[1].Note", Model.SubData[1].Note)%></p>
于 2009-04-24T17:06:35.803 に答える