Input Builder für eine Dropdownlist DB mit Daten von in MVC Contrib
-
19-09-2019 - |
Frage
Ich habe so etwas wie diese
public class Person
{
public Country {get; set;}
}
public class PersonInput
{
public ImNotSureWhatShouldIUseHere Country {get; set;}
}
gibt es einen Eingang Builder für Aufzählungen in mvc contrib aber es ist nicht gut für mich, weil ich die Daten aus der DB und ich spare den Id des ausgewählten Elements nicht der Wert
abrufenLösung
ich es geschafft, einen Eingangs Erbauer selbst zu tun, es sieht aus wie dieser
<%@ 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>
und die Eigenschaft in der Eingangsklasse es so ist:
[PartialView("MySelectList")]
public IEnumerable<SelectListItem> Om { get { return new SelectList(Web.Models.DataGenerator.Persons, "Id", "Name", 2); } }
Andere Tipps
Lassen Sie mich versuchen zu rekapitulieren, was ich von Ihrer Frage verstanden: Sie haben eine Datenbanktabelle countries
haben, die Spalten enthält id
und name
, dass Sie binden an einem select
Element in einer Ansicht möchten. Wenn dies richtig ist versuchen Sie könnten so etwas wie dies zu tun:
public ActionResult Index()
{
IEnumerable<Country> countries = FetchCountriesFromDB();
var model = new SelectList(countries, "Id", "Name", null);
return View(model);
}
Und in der stark typisierte Ansicht:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<System.Web.Mvc.SelectList>" %>
...
<%= Html.DropDownList("country", Model) %>
und schließlich konnte man eine Aktion hat, dass Sie sich zu:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string country)
{
// country will contain the selected country id
...
}