2016-08-17 3 views
-1

Я создаю веб-приложение, где мне нужны значения моего текстового поля, переданного контроллеру при нажатии кнопки. И в соответствии с ролью пользователя мне нужно перенаправить на разные страницы. Следующий мой код.Передайте текстовое поле из представления в контроллер

Вид:

@model namespace.ViewModels.LoginVM 
@{ 
    ViewBag.Title = "Login"; 
} 

<h1>User Login</h1> 
@using (Html.BeginForm("Login", "Login", FormMethod.Post)) 
{ 
    <br /> 
    <div style="background-color: skyblue; width: 50%"> 
     <div style="padding-left: 1em"> 
      <div class="display-label" style="font-size: large"> 
       Enter User Info<br /> 
       <br /> 
      </div> 
      <div> 
       <div class="editor-label">@Html.LabelFor(model => model.empID)</div> 
       <div class="editor-field">@Html.TextBoxFor(model => model.empID) 
        @Html.ValidationMessageFor(model => model.empID) 
       </div> 
       <br /> 
      </div> 
      <br /> 
      <div> 
       <input id="submit" type="submit" value="Submit" /> 
      </div> 
     </div> 
    </div> 
    <br /> 
} 

Контроллер:

public class LoginController : Controller 
{ 
    [HttpPost] 
    public ActionResult Login() 
    { 
     MySQL msql = new MySQL();    
     // var empID= *how do I get empID on submit from View?* ; 
     var role = msql.Select("Select `role` from empDB where `eID` = '" + empID+ "'"); 
     //if(role = "admin") { return RedirectToAction("Home"); } 
     //else {return View(); }    
    } 
} 

Модель:

public class LoginVM 
{ 

    [Required(ErrorMessage = "Required!")] 
    [DisplayName("empID")] 
    public int empID{ get; set; } 

} 
+0

Где вы застряли? – CodeNotFound

+0

Я не мог получить значение текстового поля для моего контроллера при нажатии кнопки. – NinjaDev

+1

Добавьте 'LoginVM model' в свой метод действия' Login', затем используйте 'model.empID' – CodeNotFound

ответ

0

Вам просто нужно добавить модель представления в качестве параметра для вашего сообщений действия

public class LoginController : Controller 
{ 
    [HttpPost] 
    public ActionResult Login(LoginVM model) 
    { 
     MySQL msql = new MySQL();    
     // var empID= *how do I get empID on submit from View?* ; 
     var role = msql.Select("Select `role` from empDB where `eID` = '" + model.empID + "'"); 
     //if(role = "admin") { return RedirectToAction("Home"); } 
     //else {return View(); }    
    } 
} 
0

Если вы хотите, чтобы получить значение поля формы на подчиненной формы, вы можете добавьте параметр с помощью sa me name от поля ввода, к методу действия, к которому отправляется форма.

Поскольку ваше значение атрибута имени входного поля "empID" (Проверьте источник просмотра страницы), вы можете добавить параметры в ваш метод с таким же именем

[HttpPost] 
public ActionResult Login(int empID) 
{ 
    //Check the value of empID parameter. 
    // For you to understand, I replaced your code with a line 
    // which basicaly return the value of this parameter value back 
    // to the client with a string "Received". 

    return Content("Received "+ empID);   
} 

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

[HttpPost] 
public ActionResult Login(LoginVM model) 
{ 
    //Check the value of model.empID parameter value. 
    return Content("Received "+ model.empID);   
} 

Когда форма отправлена, модель связующий будет отображать отправленные данные формы свойств LoginVM объекта класса.

Смежные вопросы