منشئ الإدخال للحصول على القائمة المنسدلة مع بيانات من DB في MVC Contrib
-
19-09-2019 - |
سؤال
لدي شيء مثل هذا
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
...
}
لا تنتمي إلى StackOverflow