2011-01-21 99 views
6
    <form id="Form1" runat="server"> 
         <asp:DropDownList ID="dvmDrmList" runat="server"> 
          <asp:ListItem>Theory</asp:ListItem> 
          <asp:ListItem>Appliance</asp:ListItem> 
          <asp:ListItem>Lab</asp:ListItem> 
         </asp:DropDownList> 
        </form> 

Tôi muốn ràng buộc DropDownList này trong bộ điều khiển. Tôi có nghĩa là làm thế nào tôi có thể nhận được giá trị của dropDownList trong phương thức hành động trong lớp điều khiển. Cảm ơn.Asp.Net MVC Liên kết dữ liệu DropDownList

Trả lời

9

Tôi thấy rằng bạn đang sử dụng biểu mẫu có các điều khiển web runat="server"asp:XXX. Đó là những khái niệm không bao giờ nên được sử dụng trong ASP.NET MVC. Không có thêm ViewState và PostBacks mà các điều khiển máy chủ dựa vào.

Vì vậy, trong ASP.NET MVC bạn sẽ bắt đầu bằng cách xác định một mô hình quan điểm đại diện cho dữ liệu:

public class ItemsViewModel 
{ 
    public string SelectedItemId { get; set; } 
    public IEnumerable<SelectListItem> Items { get; set; } 
} 

sau đó bạn sẽ xác định một bộ điều khiển với hai hành động (một mà ám quan điểm và khác mà xử lý nộp theo mẫu):

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new ItemsViewModel 
     { 
      Items = new[] 
      { 
       new SelectListItem { Value = "Theory", Text = "Theory" }, 
       new SelectListItem { Value = "Appliance", Text = "Appliance" }, 
       new SelectListItem { Value = "Lab", Text = "Lab" } 
      } 
     }; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(ItemsViewModel model) 
    { 
     // this action will be invoked when the form is submitted and 
     // model.SelectedItemId will contain the selected value 
     ... 
    } 
} 

và cuối cùng bạn sẽ viết mạnh mẽ gõ Index xem tương ứng:

<%@ Page 
    Language="C#" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<AppName.Models.ItemsViewModel>" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Home Page 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <% using (Html.BeginForm()) { %> 
     <%= Html.DropDownListFor(x => x.SelectedItemId, new SelectList(Model.Items, "Value", "Text")) %> 
     <input type="submit" value="OK" /> 
    <% } %> 
</asp:Content> 

Sinh mệnh này cho biết bạn cũng có thể hardcode này chọn trong tầm nhìn của bạn (mặc dù đây là điều mà tôi sẽ không đề nghị):

<% using (Html.BeginForm()) { %> 
    <select name="selectedItem"> 
     <option value="Theory">Theory</option> 
     <option value="Appliance">Appliance</option> 
     <option value="Lab">Lab</option> 
    </select> 
    <input type="submit" value="OK" /> 
<% } %> 

và có bộ điều khiển sau:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(string selectedItem) 
    { 
     // this action will be invoked when the form is submitted and 
     // selectedItem will contain the selected value 
     ... 
    } 
} 
+0

thế nào có thể tôi sử dụng mã này var model = new ItemsViewModel { Items = new [] { new SelectListItem {Value = "Lý thuyết", Văn bản = "Lý thuyết"}, chọn mới ListItem {Value = "Appliance", Text = "Appliance"}, SelectListItem mới {Value = "Lab", Text = "Lab"} } }; nếu tôi muốn nhận được giá trị của danh sách thả xuống thả từ cơ sở dữ liệu. xin vui lòng đề nghị tôi những gì tôi nên làm gì nếu tôi đang lấy giá trị từ cơ sở dữ liệu sau đó những gì mã tôi sẽ sử dụng? –

+0

@Pushpendra Kuntal, sẽ phụ thuộc vào cơ sở dữ liệu bạn đang sử dụng, lược đồ bảng cơ sở dữ liệu của bạn trông như thế nào và công nghệ truy cập cơ sở dữ liệu bạn đang sử dụng. –

Các vấn đề liên quan