c# – 模型绑定字典

c# – 模型绑定字典,第1张

概述我的控制器动作方法传递一个Dictionary< string,double?>到了视野.我认为我有以下几点: <% foreach (var item in Model.Items) { %><%: Html.Label(item.Key, item.Key)%><%: Html.TextBox(item.Key, item.Value)%><% } %> 下面是我处理POST *** 作的act @H_403_1@我的控制器动作方法传递一个Dictionary< string,double?>到了视野.我认为我有以下几点:
<% foreach (var item in Model.Items) { %><%: HTML.Label(item.Key,item.Key)%><%: HTML.TextBox(item.Key,item.Value)%><% } %>

下面是我处理POST *** 作的action方法:

[httpPost]public virtual ActionResult MyMethod(Dictionary<string,double?> items){    // do stuff........    return VIEw();}

当我在文本框中输入一些值并点击提交按钮时,POST *** 作方法没有收到任何项目?我究竟做错了什么?

解决方法 我建议你阅读 this blog post关于如何命名你的输入字段,以便你可以绑定字典.因此,您需要为密钥添加一个额外的隐藏字段:
<input type="hIDden" name="items[0].Key" value="key1" /><input type="text" name="items[0].Value" value="15.4" /><input type="hIDden" name="items[1].Key" value="key2" /><input type="text" name="items[1].Value" value="17.8" />

可以通过以下方式生成:

<% var index = 0; %><% foreach (var key in Model.Keys) { %>    <%: HTML.HIDden("items[" + index + "].Key",key) %>    <%: HTML.TextBox("items[" + index +"].Value",Model[key]) %>    <% index++; %><% } %>

这就是说,我个人建议你不要在你的观点中使用词典.它们很难看,为了为模型绑定器生成专有名称,您需要编写丑陋的代码.我会使用视图模型.这是一个例子:

模型:

public class Myviewmodel{    public string Key { get; set; }    public double? Value { get; set; }}

控制器:

public class HomeController : Controller{    public ActionResult Index()    {        var model = new[]        {            new Myviewmodel { Key = "key1",Value = 15.4 },new Myviewmodel { Key = "key2",Value = 16.1 },new Myviewmodel { Key = "key3",Value = 20 },};        return VIEw(model);    }    [httpPost]    public ActionResult Index(IEnumerable<Myviewmodel> items)    {        return VIEw(items);    }}

查看(〜/ VIEws / Home / Index.aspx):

<% using (HTML.BeginForm()) { %>    <%: HTML.EditorForModel() %>    <input type="submit" value="OK" /><% } %>

编辑模板(〜/ VIEws / Home / EditorTemplates / Myviewmodel.ascx):

<%@ Control     Language="C#"    @R_404_5107@s="System.Web.Mvc.VIEwUserControl<Models.Myviewmodel>" %><%: HTML.HIDdenFor(x => x.Key) %><%: HTML.TextBoxFor(x => x.Value) %>
总结

以上是内存溢出为你收集整理的c# – 模型绑定字典全部内容,希望文章能够帮你解决c# – 模型绑定字典所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存