0

我有一個像生成模型在asp.net MVC3一個DropDownList

[Required] 
    public string Username { get; set; } 
    [Required] 
    public string Password { get; set; } 

    public IEnumerable<Connection> Connections { get; set; } 

和連接類的模型是

public class Connection 
{ 

    public int ConnectionId { get; set; } 
    public string Name { get; set; } 
} 

我想選擇從下拉列表中選擇一個數據庫,該數據庫將有一個用戶名和密碼。像下面

public ActionResult Create() 
    { 
     var databaseConnection = new DatabaseConnection(); 

     databaseConnection.Connections = new List<Connection> 
      { 
       new Connection() 
        { 
         ConnectionId = 1, 
         Name = @"10.44.171.39\SQL2K8R2" 
        }, 
       new Connection() 
        { 
         ConnectionId = 2, 
         Name = "TestDb" 
        } 
      }; 

     return View(databaseConnection); 
    } 

以及相應的視圖

在我的控制器我已經創建的連接列表

<div> 
     <span>Select Database</span> 
     <p> 
      <select name="Section"> 
       <option value="" selected="selected">Select Section</option> 
       @foreach (var item in Model.Connections) 
       { 
        <option value="@item.ConnectionId">@item.Name</option> 
       } 
      </select> 
     </p> 
    </div> 

當我張貼的形式我得到的用戶名和密碼OK,但沒有得到

連接名稱和ID。

任何幫助,將不勝感激提前 謝謝:)

+0

按照您的方式執行此操作,您的選擇將被命名爲'ConnectionId',並且該名稱不會過來,只有ConnectionId的值。即使在下面的解決方案中,您將需要在服務器端查找名稱,或者在選擇隱藏字段時將其存儲。 – 2013-02-28 06:38:42

回答

1

修改您的<select>這樣

<div> 
     <span>Select Database</span> 
     <p> 
      @Html.DropDownListFor(
       m => m.Connections.ConnectionId, 
       new SelectList(Model.Connections, "ConnectionId", "Name"), 
       "Select a Connection" 
      ) 
     </p> 
</div> 

當您發佈表單,然後它會自動綁定到的ConnectionId屬性。

現在添加一個發佈操作到您的控制器。

[HttpPost] 
public ActionResult Create(DatabaseConnection connection) 
{ 
    //get the selected value from dropdown. 
    var selected=connection.Connections.ConnectionId; 
    //do other stuff.. 
    return View(); 
} 
+0

好吧,我不得不添加'公共連接連接{get;組; }'到我的** DatabaseConnection **類感謝您的答覆@Karthik – 2013-02-28 07:10:58