【问题标题】:MVC3 RadioButtonFor with enum带有枚举的 MVC3 RadioButtonFor
【发布时间】:2012-12-13 16:07:09
【问题描述】:

我的模型中的 HtmlHelper、RadioButtonFor 和枚举存在问题。我有一个强类型视图,我希望复选框来切换我的枚举属性。

Enum.cs

public enum Values{
    Value1,
    Value2
}

Model.cs

public class Model{
    public Values MyProp{ get; set; }
;

View.cshtml

@Html.RadioButtonFor(model => model.MyPropi, Values.Values1)

Controller.cs
public ActionResult WizardFirstStep()
{
    var model = new Model();
    return View(model);
}

如果我在控制器中设置 MyProperty 值,则会按预期检查 RadioButton。但是在发布到下一个向导步骤(获取模型作为参数)之后,该属性未设置。

如果它可以帮助您理解我的意思:如果是 C# 和 WPF,我会使用 IValueConverter。

顺便说一句:我使用 HtmlHelper.ActionLink 将模型获取到控制器。

提前致谢

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    试试这个,它应该像我之前做过的一样工作:

    @Html.RadioButtonFor(model => model.MyProp, (int)Values.Values1, model.MyProp == Values.Values1)
    

    注意转换为int,它确保html使用正确的值。

    编辑:抱歉,我认为您还需要第三个参数来确保在加载视图时设置正确的单选按钮。

    我还假设MyPropi 是一个错字,并将其更改为MyProp,请确保最后匹配正确

    【讨论】:

    • 我很害怕,但这不起作用。我的问题是:如何根据切换的单选按钮将正确的值放入我的模型中。目前我正在通过 ActionLink 将模型路由到控制器中。 @Html.ActionLink("next", "WizardSecondStep", 模型)
    • 我明白了。所以这行不通,如果您希望模型绑定起作用,您需要在每个步骤中发布您的表单。因此,不要使用 ActionLink,而是使用提交按钮来发布表单。将模型作为 post 方法的参数
    【解决方案2】:

    抱歉给您带来不便。在这里发布后,我很快找到了解决方案。我的 ActionLink 没有提交 @Html.BeginForm 表单。所以我将我的单选按钮更改为:

    @Html.RadioButtonFor(model => model.MyPropi, Values.Values1, new{ onClick = "this.form.submit();" })
    

    它将正确的值提交给我的控制器。目前这没关系。也许 ActionLink 可以回传表单数据。

    【讨论】:

      【解决方案3】:

      对于 Aspx 页面: m.YourProp, 选择的枚举值如:demo1.enum1.value2)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-15
        • 1970-01-01
        • 2020-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多