منشئ الإدخال للحصول على القائمة المنسدلة مع بيانات من DB في MVC Contrib

StackOverflow https://stackoverflow.com/questions/1721933

سؤال

لدي شيء مثل هذا

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

}

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

هناك منشئ مدخلات للعودة في MVC Contrib، لكنه ليس من الجيد بالنسبة لي لأنني أسترجع البيانات من DB وأنا أحفظ معرف العنصر المحدد وليس القيمة

هل كانت مفيدة؟

المحلول

تمكنت من القيام باني مدخلات خاصة بي، يبدو الأمر كذلك

<%@ 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 التي ترغب في ربطها 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