2012-09-27 47 views
0

我开始使用mvc并设计一个简单的登录程序。 我有两个输入用户名和密码登录屏幕查看。 但显然无法得到我如何将我的视图的输入值传递给我使用剃须刀的控制器 。这里是我的片段。MVC查看控制器通过

<table> 
    <tr> 
     <td> 
      UserName: 
     </td> 
     <td> 
      @Html.TextBox("userName") 
     </td> 
    </tr> 
     <tr> 
     <td> 
      Password 
     </td> 
     <td> 
      @Html.Password("Password") 
     </td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      @Html.ActionLink("login", "SignIn") 
     </td> 
    </tr> 
</table> 

和我的控制器看起来像这样(我能够使用重定向操作链接只是紫霞大约将值传递给控制器​​。)

public ActionResult SignIn() 
{ 
    //string userName = Request["userName"]; 
    return View("Home"); 
} 

回答

2

您可以在表单提交方法中声明表单提交方法的表单提交方法中包含上面的HTML内容,内容为POST

@using (Html.BeginForm("SignIn", "Controller", FormMethod.Post, new { id = "form1" })) 
{ 
    <table> 
    <tr> 
     <td> 
      UserName: 
     </td> 
     <td> 
      @Html.TextBox("userName") 
     </td> 
    </tr> 
     <tr> 
     <td> 
      Password 
     </td> 
     <td> 
      @Html.Password("Password") 
     </td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      <input type="submit" value="login" name="login" /> 
     </td> 
    </tr> 
</table> 
} 

然后,你可以把Post行动在你的控制器:

[HttpPost] 
public ActionResult SignIn(FormCollection frmc) 
{ 
    /// Extracting the value from FormCollection 
    string name = frmc["userName"]; 
    string pwd = frmc["Password"]; 
    return View("Home"); 
} 
+0

完美!这让我质疑。那是最佳做法?还是有更好的? –

+0

就我个人而言,我曾经这么做过简单的表单提交活动..... –

+2

我会用'@model VmLoginParams'来制作视图,并让控制器的后续操作采用'public ActionResult SignIn(VmLoginParams params)'在Html代码,然后你可以做'@ Html.EditorFor(m => m.UserName)@ Html.ValidationMessageFor(m => m.UserName)'并在控制器中检查ModelState.IsValid:if(!ModelState.IsValid)返回查看(params)'(另请参阅:http://www.mikesdotnetting.com/Article/188/View-Model-Design-And-Use-In-Razor-Views) –

0

总结你的表形式:

@using (Html.BeginForm("SignIn", "controllerName", FormMethod.POST)) 
{ 
<table> 
... 
</table> 
<input type="submit" value="Sign in" /> 
} 

并在控制器写:

[HttpPost] 
public ActionResult SignIn(string userName, string Password) 
{ 
//sign in and redirect to home page 
} 
0

查看:

@using (Html.BeginForm("SignIn", "Controller", FormMethod.Post, new { id = "form1" })) 
{ 
<table> 
<tr> 
    <td> 
     UserName: 
    </td> 
    <td> 
     @Html.TextBox("userName") 
    </td> 
</tr> 
    <tr> 
    <td> 
     Password 
    </td> 
    <td> 
     @Html.Password("Password") 
    </td> 
</tr> 
<tr> 
    <td colspan="2"> 
     <input type="submit" value="login" name="login" /> 
    </td> 
</tr> 
</table> 
} 

型号:

public string userName{get;set;} 
public string Password{get;set;} 

控制器:

[HttpPost] 
public ActionResult SignIn(Model obj) 
{ 
    //sign in and redirect to home page 
    string userName = obj.username; 
    string password = obj.password; 
} 

这可能对您有帮助。