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