2015-02-23 69 views
0

如何從我的View Model訪問文本框?我的頁面正在返回訂單號列表,我希望在頁面頂部有一個搜索文本框。但是,似乎我只能從foreach語句訪問文本框。從IENumerable View的ViewModel訪問TextBox

簡單視圖模型

public class ViewOrdersByCustomerIDViewModel 
    { 
     [Display(Name="Order Number/Order ID")] 
     public int OrderID { get; set; } 
     [DisplayName("Product Name")] 
     public string ProductName { get; set; } 
     [DisplayName("Order Date")] 
     public DateTime ?OrderDate { get; set; } 
     public string txtBoxOrderNumber { get; set; } 
    } 

我覺得像這樣的工作,但顯然是不...

@model IEnumerable<something.something.ViewOrdersByCustomerIDViewModel> 
@using (Html.BeginForm("OrderNumberSearch", "Order", FormMethod.Post)) 
{ 
    <strong>Enter Order Number/Order ID</strong> 
    @Html.TextBoxFor(m=>m.txtBoxOrderNumber) 
    <input type="submit" name="submit" value="Go" /> 
} 

任何幫助,將不勝感激。

謝謝!

EDIT

文本框的目的是過濾/搜索所顯示的順序的數字。我只需要一個文本框,並且不希望通過創建多個搜索框來循環。如果我的邏輯關閉,並有更好的方法來完成這一點,請讓我知道。我只是認爲在模型中擁有所有屬性會更清潔,但情況可能並非如此。

+0

作爲你的模型是'IEnumerable',你需要遍歷這一點,使用TextBoxFor獲得文本框。 – ramiramilu 2015-02-23 11:50:10

+0

你爲什麼要在模型中使用它?如果你想搜索,你可以在你的控制器操作中使用它並將其用於搜索。請更新你真正想要做的事情。 – BabyDuck 2015-02-23 11:50:51

+0

不清楚你想要做什麼。該表單的目的是獲得與「OrderNumber」相匹配的過濾訂單清單嗎? – 2015-02-23 11:50:52

回答

2

讓您的ViewModels在下面的方式 -

public class OrdersByCustomerIDViewModel 
{ 
    [Display(Name="Order Number/Order ID")] 
    public int OrderID { get; set; } 
    [DisplayName("Product Name")] 
    public string ProductName { get; set; } 
    [DisplayName("Order Date")] 
    public DateTime ?OrderDate { get; set; } 
} 

public class OrderSearchViewModel 
{ 
    public List<OrdersByCustomerIDViewModel> Orders { get; set;} 
    public string txtBoxOrderNumber { get; set; } 
} 

並且在視圖 -

@model OrderSearchViewModel 
@using (Html.BeginForm("OrderNumberSearch", "Order", FormMethod.Post)) 
{ 
    <strong>Enter Order Number/Order ID</strong> 
    @Html.TextBoxFor(m=>m.txtBoxOrderNumber) 
    <input type="submit" name="submit" value="Go" /> 
} 

<!-- Here use the list to display results --> 
foreach(var item in Model.Orders) 
{ 
    @Html.LabelFor(m => item.ProductName)  
} 
+0

謝謝。當然,我不得不改變控制器,但它運作良好。 – Anonymous 2015-02-23 12:22:46