MVC 强类型视图数据与数组

发布于 2024-07-18 03:29:45 字数 2044 浏览 5 评论 0原文

我有一个使用类似于此的强类型 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(),并在视图中使用它,我看不到我的数据在文本框中。

有趣的是,如果我在文本框中输入数据,这些数据将填充到 Post 控制器中返回的 MyViewData 中。

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

Keith

更新 1

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

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

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

同样的方式工作吗?

I have a view that uses a strongly typed ViewData similar to this:

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

Controller:

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

And the View is like this:

<%@ 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(); %>

Ok, if I create a MyViewData, call LoadDummyData(), and use that in a View, I don't see my data in the TextBoxes.

The funny thing is, if I enter data in to the TextBoxes, that will get populated into the returned MyViewData in the Post controller.

What am I doing wrong? Was this fixed in a later version of MVC? I think I have RC 1.

Keith

Update 1

This

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

works just fine. I guess my question is, should this

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

work the same way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故人爱我别走 2024-07-25 03:29:45

尝试这个:

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

Try this:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文