我有这样的东西
public class Person
{
public Country {get; set;}
}
public class PersonInput
{
public ImNotSureWhatShouldIUseHere Country {get; set;}
}
在 mvc contrib 中有一个用于枚举的输入构建器,但这对我不利,因为我从数据库中检索数据并且我保存了所选元素的 ID 而不是值
我有这样的东西
public class Person
{
public Country {get; set;}
}
public class PersonInput
{
public ImNotSureWhatShouldIUseHere Country {get; set;}
}
在 mvc contrib 中有一个用于枚举的输入构建器,但这对我不利,因为我从数据库中检索数据并且我保存了所选元素的 ID 而不是值
我设法做了一个自己的输入生成器,它看起来像这样
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/InputBuilders/Field.Master"
Inherits="System.Web.Mvc.ViewPage<PropertyViewModel<object>>" %>
<%@ Import Namespace="MvcContrib.UI.InputBuilder.Views"%>
<%@ Import Namespace="System.Web.Mvc.Html"%>
<asp:Content ID="Content2" ContentPlaceHolderID="Input" runat="server">
<%=Html.DropDownList(Model.Name, Model.Value as IEnumerable<SelectListItem>)%>
</asp:Content>
和 Input 类中的属性是这样的:
[PartialView("MySelectList")]
public IEnumerable<SelectListItem> Om { get { return new SelectList(Web.Models.DataGenerator.Persons, "Id", "Name", 2); } }
让我试着回顾一下我从你的问题中理解的内容:你有一个countries
包含列的数据库表,id
并且name
你想绑定到select
视图中的一个元素。如果这是正确的,您可以尝试执行以下操作:
public ActionResult Index()
{
IEnumerable<Country> countries = FetchCountriesFromDB();
var model = new SelectList(countries, "Id", "Name", null);
return View(model);
}
在您的强类型视图中:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<System.Web.Mvc.SelectList>" %>
...
<%= Html.DropDownList("country", Model) %>
最后你可以有一个你发布到的动作:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string country)
{
// country will contain the selected country id
...
}