2017-02-21 6 views
0

Контроллер:MVC Действие не стреляя

public ActionResult Insert() 
{ 
    return View(); 
} 
public ActionResult Insert(Employee emp) 
{ 
    Employee emp1 = new Employee(); 
    emp1.insert(emp); 
    return View(); 
} 

cshtml

@using (Html.BeginForm("Employee", "Insert", FormMethod.Post)) 
{ 
    @Html.TextBoxFor(model => model.name) 
    @Html.TextBoxFor(model => model.Email) 
    @Html.TextBoxFor(model => model.mob) 

    <input type="button" value="Register me" /> 
} 

Я должен сохранить свои модели значения на кнопку мыши ('Register меня'). Заранее спасибо.

+1

Он должен быть '<кнопка типа = "отправить" ...>' (и я полагаю, ваш второй метод имеет '[HttpPost]') –

ответ

7

Попробуйте установить атрибуты в контроллере:

[HttpGet] // here ([HttpGet] is default so here you can delete this attribute) 
public ActionResult Insert() 
{ 
    return View(); 
} 

[HttpPost] // here 
public ActionResult Insert(Employee emp) 
{ 
    Employee emp1 = new Employee(); 
    emp1.insert(emp); 
    return View(); 
} 

Для вызова какого-либо действия вам необходимо отправить форму. Изменение типа button к submit:

<input type="submit" value="Register me" /> // type="button" -> type="submit" 

Кроме того, в BeginForm вы должны сначала указать имя действия, а затем имя контроллера:

@using (Html.BeginForm("Insert", "Employee", FormMethod.Post)) 
+2

Также Html.BeginForm ("** Insert **", "Employee", FormMethod.Post)? – Amit

+0

@ Приходите, спасибо, отредактировано –

3

Его Потому что вы не объявили HTTP POST на INSERT action

[HttpPost] 
    public ActionResult Insert(Employee emp) 
    { 
     Employee emp1 = new Employee(); 
     emp1.insert(emp); 
     return View(); 
    } 

Когда вы используете Beginform и ваш FormMethod - Post, связанное с этим действие должно иметь такой же тип HTTP, кстати, не имеет значения, если у вас есть [HttpGet] на первом ActionResult Поскольку в MVC любой ActionResult, который не объявлял какой-либо тип HTTP-запроса/ответа, известен как [HttpGet]

Также в вашем BeginForm():

@using (Html.BeginForm("ActionName(Insert)", "ControllerName", FormMethod.Post)) 
{ 
    @Html.TextBoxFor(model => model.name) 
    @Html.TextBoxFor(model => model.Email) 
    @Html.TextBoxFor(model => model.mob) 

    <input type="submit" value="Register me" /> 
} 
Смежные вопросы