【问题标题】:MVC strongly typed viewdata with arrays带有数组的 MVC 强类型视图数据
【发布时间】:2013-05-08 04:06:00
【问题描述】:

我有一个使用强类型 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");
}

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 中看不到我的数据。

有趣的是,如果我在 TextBoxes 中输入数据,它将被填充到 Post 控制器中返回的 MyViewData 中。

我做错了什么?这在更高版本的 MVC 中修复了吗?我想我有 RC 1。

基思

更新 1

这个

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

工作得很好。我想我的问题是,应该这样

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

以同样的方式工作?

【问题讨论】:

    标签: asp.net-mvc viewdata


    【解决方案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>
    

    【讨论】:

    • 和 我只是期待 以同样的方式工作。我调试到 MVC 源代码并发现失败,但我对 .NET 的了解还不够,无法知道它是否应该工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2010-11-06
    • 2011-01-12
    • 1970-01-01
    相关资源
    最近更新 更多