2012-11-06 61 views
1

我使用asp.net MVC3和我用下面的模型填充創建視圖如何從下拉菜單中訪問所選的項目,asp.net MVC3

型號

public class CategoryModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string URL { get; set; } 
    public string Description { get; set; } 
    public string Logo { get; set; } 
    public bool IsActive { get; set; } 
    public bool isPopular { get; set; } 
    public IList<Category> Parentcategories { get; set; } 

} 

在我創建視圖我填充這樣

查看

<div class="editor-field"> 
     @Html.DropDownList("parentcategories", new SelectList(Model.Parentcategories.Select(c => c.Name), Model.Parentcategories.Select(c => c.Name))) 
     @Html.ValidationMessageFor(model => model.Parentcategories) 
    </div> 

現在我怎麼可以訪問所選擇的項目在我的控制器方法

方法

[HttpPost] 
    public ActionResult Create(CategoryModel model , HttpPostedFileBase file) 
    { 
    // 
    } 

感謝, 阿赫桑

回答

1

試試這個:

public ActionResult Create(string parentcategories, CategoryModel model , HttpPostedFileBase file) 

parentcategories將包含選擇option val UE。

+0

有沒有辦法使用'CategoryModel'辦呢? – Smartboy

+1

@Smartboy是的,使用屬性,然後爲此屬性編寫'DropDownListFor'。 – webdeveloper

0

詳情:您可以直接從您的模型訪問它。

[HttpPost] 
public ActionResult Create(CategoryModel model , HttpPostedFileBase file) 
{ 
     var selectedCategory = model.parentcategories; // something like that 
} 
1

由於Smartboy已經提到的,你應該使用DropDownListFor:
1.追加模型與public int ParentCategoryId { get; set; }領域。
2.代替使用@ Html.DropDownList使用:
@Html.DropDownListFor(m => m.ParentCategoryId, new SelectList(...))
3.服務器側可以保持相同:

[HttpPost] 
public ActionResult Create(CategoryModel model) 
{ 
    // 
} 

其中model.ParentCategoryId將已選擇的項目值。
另外請注意,您可以先設置選擇的項目價值爲您的觀點:

public ActionResult Index() 
{ 
    var model = CategoryModel(); 
    ... 
    model.ParentCategoryId = some_selected_value; 
    return View(model); 
}