У меня есть мнение, что использует сильно типизированных ViewData похожее на это:MVC строго типизированными 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() и использую это в представлении, я не вижу свои данные в TextBoxes.
Забавно, если я ввожу данные в текстовые поля, которые будут заполнены в возвращаемый MyViewData в контроллере Post.
Что я делаю неправильно? Было ли это исправлено в более поздней версии MVC? Я думаю, что у меня есть RC 1.
Кит
Update 1
Это
<%= Html.TextBox("DataId")%>
работает просто отлично. Я думаю, мой вопрос в том, должен ли этот
<%= Html.TextBox("SubData[0].Note")%>
Работает так же?
The <% = Html.TextBox ("DataId", Model.DataId)%> работает так хорошо, как <% = Html.TextBox ("DataId")% > Я просто ожидал <% = Html.TextBox ("SubData [0] .Note")%> работать одинаково. Я отлаживался в источнике MVC и обнаружил сбой, но я не знаю .NET достаточно хорошо, чтобы знать, должно ли оно работать. –