2016-08-17 29 views
-1

ボタンクリックでコントローラに渡されるテキストボックスの値が必要なWebアプリケーションを構築しています。ユーザーの役割に応じて、別のページにリダイレクトする必要があります。以下は私のコードです。ビューからコントローラへのテキストボックス値の受け渡し

ビュー:

@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

あなたの 'Login'アクションメソッドに' LoginVM model'を追加し、 '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でパラメータを追加する私の名前は入力欄のように、フォームが提出しているアクションメソッドに渡します。

ご入力フィールドのname属性の値は、(ページのソースの表示を確認してください)"empID"あるので、あなたは、同じ名前を持つあなたの方法にPARAMを追加することができます

[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クラスオブジェクトのプロパティにポストされたフォームデータをマップします。

関連する問題