2016-07-20 2 views
0

Я пытаюсь научиться MVC и застрял на этом в течение некоторого времени, все обучающая онлайн использует сильно типизированных вид, но на мой взгляд не сильно типизированных,MVC передать данные не сильно типизированной на контроллер

@using (Html.BeginForm("addInventory", "AdminController", FormMethod.Post)) 
{ 
    <div class="form-style-2-heading">Add New Inventory</div> 
    <label> 
     <span>No <span class="required">*</span></span>@Html.TextBox("no", null, new { id = "no", Class = "input-field" }) 
    </label> 
    <label> 
     <span>Name <span class="required">*</span></span>@Html.TextBox("name", null, new { id = "name", Class = "input-field" }) 
    </label> 
    <label> 
     <span>Primary Type <span class="required">*</span></span>@Html.DropDownList("typeList", ViewBag.typeList as SelectList, new { id = "primarytype", Class = "select-field" }) 
    </label> 
    <label> 
     <span>Secondary Type <span class="required">*</span></span>@Html.DropDownList("typeList", ViewBag.typeList as SelectList, new { id = "secondarytype", Class = "select-field"}) 
    </label> 

    <label><span>&nbsp;</span><input type="submit" value="Submit" /></label> 
} 

Так что я успешно переплетены мой выпадающий список с данными из контроллера, но я не могу сделать это наоборот

Edit:

Модель:

public class inventoryModel 
{ 
    public int no { get; set; } 
    public string name { get; set; } 
    public int primaryType { get; set; } 
    public int secondaryType { get; set; } 
} 

Контроллер:

private ActionResult addInventory() 
{ 

    return View(); 
} 
+0

, что ваш вопрос? –

+0

Вы не сильно привязываете ничего. Покажите свою модель и подпись метода POST –

+0

@teovankot привет, вопрос в том, хочу ли я узнать, как получить данные элементов управления html со стороны контроллера после нажатия кнопки –

ответ

0

Ваша ошибка здесь:

<label> 
    <span>Primary Type <span class="required">*</span></span> 
    @Html.DropDownList("primaryType", (IEnumerable<SelectListItem>)ViewBag.typeList, new { @class = "select-field" }) 
</label> 
<label> 
    <span>Secondary Type <span class="required">*</span></span> 
    @Html.DropDownList("secondaryType", (IEnumerable<SelectListItem>)ViewBag.typeList, new { @class = "select-field"}) 
</label> 

Не используйте идентификатор в htmlAttributes 1 параметра хелпера используется для тега id и name на POST значение тега будет привяжите свойство модели к name.

Также обратите внимание, что я избегаю class имя с @ символ.

На POST здесь, что ваш контроллер подпись должна быть:

[HttpPost] 
private ActionResult addInventory(inventoryModel model) 
{ 
    var data = model.secondaryType; //here you can get your posted data 
    return View(); 
} 
+0

У меня получилась эта ошибка: Элемент ViewData с ключом «primaryType» имеет тип «System.Int32», но должен иметь тип «IEnumerable ». Когда я его пробовал, он передает список избранных вместо выбранного значения? –

+0

проще использовать 'IEnumerable ' вместо 'SelectList', просто измените свой типList на' IEnumerable 'i update answer –

+2

@BloopieBloops - прочитайте ссылку, которую я вам дал в вопросе - это означает, что' ViewBag. typeList' является 'null' –