2009-07-30 46 views
13

Tôi có một trang web đang sử dụng ASP.Net MVC Beta 5 và tôi vừa nâng cấp nó lên ASP.Net MVC 1.0. Tôi gặp sự cố với mục đã chọn trong danh sách thả xuống.ASP.Net Html.DropDownList Phần tử đã chọn không được chọn

Người sau có một câu hỏi tương tự (Html.DropDownList in ASP.NET MVC RC (refresh) not pre-selecting item) nhưng tôi không có câu trả lời (trừ nó có thể là một lỗi)

phương pháp

My điều khiển trông như sau:

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult View(Guid id) 
{ 
    IntegrationLogic logic = new IntegrationLogic(new IntegrationLinq()); 
    CompanyLogic companyLogic = new CompanyLogic(new CompanyLinq()); 
    IntegrationContainer container = new IntegrationContainer(); 

    container.Sources = logic.GetImportSource(id); 
    container.Companies = companyLogic.GetCompanies(); // Returns a IList<company> 
    container.SourceActions = logic.GetAllSourceActions(); // Returns an IList<SourceAction> 
    container.SinkActions = logic.GetAllSinkActions(); 
    container.SuccessActions = logic.GetAllSuccessActions(); 
    container.FailureActions = logic.GetAllFailureActions(); 
    container.Actions = logic.GetAllActions(); 
    container.Watchers = logic.GetAllWatcherActions(); 
    container.ChainActions = logic.GetAllChainActions(); 

    return View("View", container); 
} 

Quan điểm là một mạnh mẽ gõ so với mẫu như sau

public partial class View : ViewPage<IntegrationContainer> {} 

diện tích vấn đề trong giao diện mẫu là:

<label for="Companies">Company: </label><%=Html.DropDownList("Companies", 
               new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%> 

Tôi đang tạo Danh sách thả xuống, mục đã chọn không bao giờ thực sự được chọn - và đó là vấn đề. "item.CompanyID" là một Guid, "id" là một Guid và "name" là một chuỗi trên đối tượng công ty được cung cấp trong IList được tổ chức trong cá thể ViewData.Model.Companies.

Đây có phải là lỗi không? - Tôi thấy khó hiểu tại sao điều này vẫn còn hiện diện trong ASP.Net MVC ... Tôi sẽ hoàn toàn hạnh phúc nếu đó là điều tôi đã làm.

Bất kể, công việc được đề xuất là gì?

Cảm ơn

Trả lời

21

Nó chỉ ra rằng nếu tên của kiểm soát của bạn qua Html.DropDownList là tên giống như các đối tượng bộ sưu tập nó gây ra một vấn đề với ASP.Net MVC.

Vì vậy, nếu tôi thay đổi đoạn mã sau:

<label for="Companies">Company: </label><%=Html.DropDownList("Companies", 
               new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%> 

tới:

<label for="Companies">Company: </label><%=Html.DropDownList("company", 
               new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%> 

tất cả hiện đang làm việc. Điều này là do tên của bộ sưu tập trên mô hình là Model.Companies .... bonkers ... cũng lưu ý, việc thay đổi trường hợp tên của kiểm soát từ "công ty" thành "công ty" cũng không hoạt động (mà làm cho cảm giác tôi cho là).

Tôi có thể thay đổi Mô hình, nhưng phần lớn được tạo bằng cách sử dụng LINQ to SQL Tôi nghĩ rằng việc thay đổi tên của các phần tử Html dễ dàng hơn.

+1

Sau khi tìm kiếm thông qua 6 câu hỏi về SO, đây là câu trả lời duy nhất có hiệu quả ... cảm ơn! – Martin

+0

Không thành vấn đề. :) – Kinlan

+0

Bị đập đầu vào tường trên cái này, cảm ơn rất nhiều. – aboy021

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