Asp.net mvc 工作结果也是如此。所有字段的值都相同。将[i]更改为ElementAt(i)确实会产生一个工作视图,但回发会产生一个空模型。回发是另一个故事。您是否捕获了[Post]?是的,我检查了Post,它为空。问题是它生成的每个字段的Id/名称都是“Key”或“Va

Asp.net mvc 工作结果也是如此。所有字段的值都相同。将[i]更改为ElementAt(i)确实会产生一个工作视图,但回发会产生一个空模型。回发是另一个故事。您是否捕获了[Post]?是的,我检查了Post,它为空。问题是它生成的每个字段的Id/名称都是“Key”或“Va,asp.net-mvc,Asp.net Mvc,工作结果也是如此。所有字段的值都相同。将[i]更改为ElementAt(i)确实会产生一个工作视图,但回发会产生一个空模型。回发是另一个故事。您是否捕获了[Post]?是的,我检查了Post,它为空。问题是它生成的每个字段的Id/名称都是“Key”或“Value”。它不会创建具有唯一ID的字段(因此博客文章不可用。它假定ID与字典相关)。不,分配是特定的,它必须是字典。我不能使用包装器。另外,你知道在现实生活中,你会从ViewModel而不是字典中受益匪浅吗?从你的角度来看更有意义。是的,就像在



工作结果也是如此。所有字段的值都相同。将[i]更改为ElementAt(i)确实会产生一个工作视图,但回发会产生一个空模型。回发是另一个故事。您是否捕获了
[Post]
?是的,我检查了Post,它为空。问题是它生成的每个字段的Id/名称都是“Key”或“Value”。它不会创建具有唯一ID的字段(因此博客文章不可用。它假定ID与字典相关)。不,分配是特定的,它必须是字典。我不能使用包装器。另外,你知道在现实生活中,你会从ViewModel而不是字典中受益匪浅吗?从你的角度来看更有意义。是的,就像在家庭作业中一样。使用的实用性并不是真正的重点。关键是要理解模型绑定器并使其与非索引类型一起工作。(否则,我将简单地包装它并使用EditorTemplates)。从我一直读到的其他方面来看,这应该是“非常容易”做到的,但由于某种原因,还没有人发布过它的实际工作示例。一个接一个的博客不断地指出它是如何构建到MVC2.0中的,但似乎没有人在实践中展示它。好吧,我明白了@Phil的回答在这种情况下是正确的。请参阅@Phil的回答下我对回发的
null
的评论。不,作业是明确的,它必须是一本词典。我不能使用包装器。另外,你知道在现实生活中,你会从ViewModel而不是字典中受益匪浅吗?从你的角度来看更有意义。是的,就像在家庭作业中一样。使用的实用性并不是真正的重点。关键是要理解模型绑定器并使其与非索引类型一起工作。(否则,我将简单地包装它并使用EditorTemplates)。从我一直读到的其他方面来看,这应该是“非常容易”做到的,但由于某种原因,还没有人发布过它的实际工作示例。一个接一个的博客不断地指出它是如何构建到MVC2.0中的,但似乎没有人在实践中展示它。好吧,我明白了@Phil的回答在这种情况下是正确的。请参阅@Phil的回答下我对回发的
null
的评论。我也看过定制ModelBinder的想法。但我不明白的是,为什么所有的博客都说这是MVC2.0的固有特性,但显然不是?我甚至发现在MVC1.0中实现这一点的定制模型绑定器的示例在2.0中不起作用,他们说这是因为它内置在2.0中。例如,你能给我看一个博客吗,他们说这可以用默认的ModelBinder工作?这里的链接指向一个自定义ModelBinder,它在v1中工作,在v2中被破坏。这正是我的观点。如果你阅读了回复,他们会告诉你2.0版本已经更新,可以使用默认的ModelBinder。嗯,看起来你是对的。让我再把代码弄得乱七八糟,看看是否能把它连接起来,我也考虑过定制ModelBinder的想法。但我不明白的是,为什么所有的博客都说这是MVC2.0的固有特性,但显然不是?我甚至发现在MVC1.0中实现这一点的定制模型绑定器的示例在2.0中不起作用,他们说这是因为它内置在2.0中。例如,你能给我看一个博客吗,他们说这可以用默认的ModelBinder工作?这里的链接指向一个自定义ModelBinder,它在v1中工作,在v2中被破坏。这正是我的观点。如果你阅读了回复,他们会告诉你2.0版本已经更新,可以使用默认的ModelBinder。嗯,看起来你是对的。让我再把代码弄得乱七八糟,看看我能不能把它连接起来,请支持我的人解释一下,不是我。你们帮了大忙。任何程序员都知道,当你不能使用更智能的场所来解决任务时,强制执行的任务是多么令人恼火。请让投票人证明一下,不是我。你们帮了大忙。任何程序员都知道,当你不允许使用更智能的场所来解决任务时,授权任务会多么令人恼火。是的,这只是其中的一种事情,所有事情都是如此模糊,以至于不能很好地执行。这也行得通。我可能会编写自己的Html助手来完成整个过程,这是不可避免的。晦涩难懂?你还在学校。。阅读文档,在令人沮丧的时刻奋战而不慌乱,这是一种很好的专业技能。是的,这只是其中的一种,所有事情都是如此模糊,以至于不能很好地点击。这也行得通。我可能会编写自己的Html助手来完成整个过程,这是不可避免的。晦涩难懂?你还在学校。。阅读文档,在沮丧的时刻奋战而不慌乱,这是一项很好的专业技能。
    public ActionResult DictionaryView()
    {
        var model = new Dictionary<string, int>
        {
            { "First", 0 },
            { "Second", 0 },
            { "Third", 0 },
            { "Fourth", 0 }
        };

        return View(model);
    }

    [HttpPost]
    public ActionResult DictionaryView(Dictionary<string, int> dictionary)
    {
        return null;
    }
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<System.Collections.Generic.IDictionary<string,int>>" %>

<asp:Content ContentPlaceHolderID="MainContent" runat="server">

    <h2>Dictionary</h2>
<% using (Html.BeginForm()) {%>
        <%: Html.ValidationSummary(true) %>
    <% for (int i = 0; i < Model.Count; i++) { %>
        **// This is there I am stuck!** 
    <% } %>
            <p>
                <input type="submit" value="Submit" />
            </p>
    <% } %>
</asp:Content>
<%
    int i = 0;
    foreach (KeyValuePair<string, int> pair in Model)
    { %>
    <p>Key: <%= Html.TextBox(String.Format("[{0}].key", i), pair.Key)%></p>
    <p>Value: <%= Html.TextBox(String.Format("[{0}].value", i), pair.Value)%></p>
<%
    i++;
    }
%>
Public Function DictionaryView() As ActionResult

    Dim model = New System.Collections.Generic.List(Of MyDictionary)
    model.Add(new MyDictionary("First", 0))
    model.Add(new MyDictionary("Second", 0))
    model.Add(new MyDictionary("Third", 0))
    model.Add(new MyDictionary("Forth", 0))

    Return View(model)
End Function


''# This would be your view model.
Public Class MyDictionary
    Public Property TheString
    Public Property TheInt
End Class
model.TheString  
model.TheInt
Request.Params["First"]
foreach (var pair in Model)
{
    Response.Write(Html.TextBox(pair.Key, pair.Value));
} 
<% using (Html.BeginForm()) {%>
        <%: Html.ValidationSummary(true) %>
        <% int counter = 0;
           foreach (var kv in Model) { %>
            <input type="text" name="dictionary[<%= counter %>].Key" value="<%= kv.Key %>" />
            <input type="text" name="dictionary[<%= counter %>].Value" value="<%= kv.Value %>" />
        <%
           counter++;
           } %>
        <p>
            <input type="submit" value="Submit" />
        </p>
<% } %>