首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FormCollection修改键

FormCollection修改键
EN

Stack Overflow用户
提问于 2011-08-15 17:26:14
回答 2查看 562关注 0票数 0

如何重写FormCollection中的键(我需要这样做,因为我有一个属性绑定到一个视图中的多个CheckBoxes )?当post back正在运行时,我确实尝试了一下:

代码语言:javascript
复制
formCollection["DecisionReasons"] = formCollection["DecisionReasons"].Replace(",false", "").Replace("false,", "").Replace(",","|");

...but当我执行UpdateModel时,只更新模型中的第一个值(在我的模型中,我有一个DecisionReason字符串)。

我需要一个ModelBinder吗(我怎么做?)或者有其他方法可以做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2011-08-15 18:03:17

我在上面做了评论,询问更多细节,但我得到的印象是您使用复选框来表示Flags枚举中的各个值。

默认的模型绑定器不以这种方式处理映射标志,但我发现在this article中有一个定制的模型绑定器可以处理映射标志。

编辑:

好的,我从您的更新中看到(如果您将其添加到您的问题中,而不是将其作为答案发布会更好),您的模型有一个逗号分隔的字符串属性,其中包含每个选定的DecisionReasons。

我建议您考虑使用ViewModel。ViewModel是您的模型的抽象,根据您在视图中呈现它的方式进行定制。

您可以从您的模型类派生ViewModel,以减少工作量。考虑以下(未测试的)代码:

代码语言:javascript
复制
public class MyModel
{
    public virtual string DecisionReasons { get; set; }
}

public class MyViewModel : MyModel
{
    public string[] DecisionReasonValues { get; set; }

    public override string DecisionReasons
    {
        get
        {
            return string.Join(",", DecisionReasonValues);
        }
        set
        {
            DecisionReasonValues = value.Split(',');
        }
    }
}

使用MyViewModel作为视图的模型,并使用DecisionReasonValues而不是DecisionReasons来呈现复选框。ASP.NET MVC将从您的复选框填充DecisionReasonValues,但您可以通过重写的DecisionReasons属性将它们作为逗号分隔的字符串进行访问。

票数 0
EN

Stack Overflow用户

发布于 2011-08-15 19:26:28

视图的一部分

代码语言:javascript
复制
<div style="width:300px;height:250px;overflow:auto;">
@foreach (var a in (IEnumerable<SelectListItem>)ViewBag.AllDecisionReasons)
{
    @Html.CheckBox("DecisionReasons", a.Selected, new { value = a.Value })

    <label>@a.Text</label><br />
}
@Html.ValidationMessage("DecisionReasons", (string)Model.DecisionReasons)

如果我在我的视图中选中了多个复选框,我的模型属性字符串将被更新为只有一个值(如果在视图中我选中了2个复选框,我的模型将被更新为第一个值,所以我需要模型属性的值为"valu1,valu2“,依此类推)。

对不起,我的英语不好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7063414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档