【发布时间】:2011-08-08 16:26:15
【问题描述】:
在模型中,我有:
public Guid? Country
{ get; set; }
在视图中,我有:
@Html.DropDownListFor(m => m.Country, (SelectList)ViewBag.Countries)
提交时出现错误,导致它想将字符串保存到Guid。如何保存值而不是下拉列表的文本?
【问题讨论】:
-
作为一种解决方法,您可以添加一个包装 GUID 的
CountryString属性并设置您的DropDownListFor以使用它,但必须有更好的方法。 -
好的。我稍微更改了代码,这就是我在视图中使用的代码:@Html.DropDownListFor(m => m.Country, new SelectList(ViewBag.Countries, "ID_Country", "ISO_Code"), "" );基本上,我刚刚将 SelectList() 构造函数调用从控制器移至视图。这就是我从控制器(通过实体框架)获取国家到 ViewBag 的方式:ViewBag.Countries = from e in new FarmerEntities().Countries select e;。现在我得到“值不能为空”异常(如果我选择或不选择)。请帮忙!
-
从外观上看,您使用的是 ISO 国家代码(不是 GUID)。您的国家/地区数据类型是 Guid 而不是字符串是否有原因?
-
没有。 “ID_Country”用于 DropDownLists 的“隐藏”值列表,“ISO_Code”用于 DropDownLists 的“前”/可见值列表。在提交之前一切正常。
标签: asp.net-mvc razor html-helper