문제

나는 이런 것이있다

public class Person
{
public Country {get; set;}

}

public class PersonInput
{
public ImNotSureWhatShouldIUseHere Country {get; set;}
}

MVC Contrib의 열거에 대한 입력 빌더가 있지만 DB에서 데이터를 검색하고 선택한 요소의 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>

입력 클래스의 속성은 다음과 같습니다.

 [PartialView("MySelectList")]
        public IEnumerable<SelectListItem> Om { get { return new SelectList(Web.Models.DataGenerator.Persons, "Id", "Name", 2); } }

다른 팁

내가 당신의 질문에서 내가 이해 한 것을 다시 시도해 보겠습니다 : 당신은 데이터베이스 테이블이 있습니다. countries 열이 포함되어 있습니다 id 그리고 name 당신이 a에 묶고 싶어한다 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
    ...
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top