2009-04-24 43 views
1

我有一個使用強類型的ViewData類似這樣的一個觀點:MVC強類型的可視數據與陣列

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"); 
} 

和View是這樣的:

<%@ 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(),並在視圖中使用它,我看不到我的數據在TextBoxes中。

有趣的是,如果我將數據輸入到文本框中,那麼它將填充到Post控制器中返回的MyViewData中。

我在做什麼錯?這是否修復了MVC的更高版本?我覺得我有RC 1

基思

更新1

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

的作品就好了。我想我的問題是,應該如此

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

以同樣的方式工作?

回答

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> 
+0

的 <%= Html.TextBox( 「數據ID」,Model.DataId)%> 作品就好作爲 <%= Html.TextBox( 「數據ID」)% > 我只是希望 <%= Html.TextBox(「SubData [0] .Note」)%> 以同樣的方式工作。我調試到MVC源代碼,發現失敗,但我不知道.NET足以知道它是否應該工作。 – 2009-04-24 18:30:48