如何在MVC3中使用选定的DDL值填充我的字符串属性

时间:2012-05-28 07:16:59

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


我有一个标量字符串属性为“Clarified”的实体。

澄清可以有值,“是”或“否”。

在我的ViewModel中,我有以下属性。

public SelectList ClarifiedTypes { get; set; }
public string Clarified { get; set; }

在我的Get动作方法中,我完成了以下操作:

        model.ClarifiedTypes =
                new SelectList(
                new[] { new { Value = "1", Text = "Ja" }, new { Value = "2", Text = "Nej" }, },
                "Value",
                "Text");

这就是我在视图中制作DDL的方式:

 <div class="editor-field">
                @Html.DropDownListFor(x => x.ClarifiedTypes, Model.ClarifiedTypes, "Välj alternativ")
 </div>

现在我的问题出在Post动作方法中。

在某种程度上,我需要使用从Model.ClarifiedTypes中选择的值填充我的Model.Clarified,然后执行“entity.Clarified = Model.Clarified”。我不知道该怎么做。

我试过了:

Model.Clarified = Model.ClarifiedTypes.selectedvalue.ToString();
Goalcard.Clarified = model.Clarified

但是我收到了一个错误:

No parameterless constructor defined for this object.

我想要实现的是用户应该能够在DDL中选择“是”或“否”值,然后该值应该填充到我的实体属性中。

感谢任何帮助!

提前致谢

更新

我收到了这个错误

为此对象定义的无参数构造函数。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.MissingMethodException:没有为此对象定义无参数构造函数。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

1 个答案:

答案 0 :(得分:0)

你应该写

@Html.DropDownListFor(x => x.Clarified, Model.ClarifiedTypes, "Välj alternativ")

当您提交表单时,下拉列表中的选定值将显示在Model.Clarified

要使模型绑定能够工作,您的模型应该具有默认构造函数,否则mvc将无法创建模型并将其绑定。

如果无法在模型上恢复默认构造函数,请创建自定义模型绑定器或更好,为其创建单独的视图模型。