如何从论坛的主页面授权用户?

时间:2011-09-22 14:48:45

标签: asp.net-mvc-3 razor

我正在尝试实施一个包含主题的简单博客

模型/ Topic.cs

public class Topic
{
    public int ID {get; set;}

    [StringLength(50)]
    [RequiredAttribute(ErrorMessage = "*")]
    public string Title {get; set;}

    [StringLength(1024)]
    [RequiredAttribute(ErrorMessage = "*")]
    public string Body { get; set; }

    public int CommentsCount { get; set; }

    public DateTime TimeLastUpdated { get; set; }
    public int AuthorID { get; set; }

    public virtual List<Comment> commentsList { get; set; }

}

主页看起来像一个主题列表。

控制器/ HomeController.cs

public class HomeController : Controller

    private ContentStorage db = new ContentStorage();
    public ViewResult Index()
    {
        // Topics = DbSet<Topic> Topics { get; set; }
        return View(db.Topics.ToList());
    }

   [HttpPost]
   public void LogIn(string login, string password)
   {
        int i;
        i = 10;

   }

}

主页的视图非常简单。

查看/主页/索引

@model IEnumerable<MvcSimpleBlog.Models.Topic>
...
<table width="95%" height="86" border="0">
      <tr>
        <td width="45%" valign = "bottom" >Login:</td>
        <td width="45%" valign = "bottom" >Password:</td>
        <td width="10%"></td>
      </tr>

      <tr>
        <td width="45%"><p> <input type="text" name="login" />  </p></td>
        <td width="45%"><p><input type="password" name="password" /></p></td>
        <td width="10%" align = "left"> 
            @using (Html.BeginForm("LogIn", "Home"))
            { 
                <input type = "submit" value = "Enter" />
            }
        </td>
      </tr>

      <tr>
        <td width="45%" valign = "top" >@Html.ActionLink("Register", "Register", "Account")</td>
      </tr>

</table>

我如何将View中编辑框的值传递给HomeController方法? “LogIn”方法应该从视图接收数据,调用“帐户”控制器,将用户的登录名和密码传递给它。 “帐户”控制器会对此用户进行验证,并将浏览器重定向到包含主题的主页。

但是我无法访问视图中的登录名和密码编辑框......我真的不知道该怎么做,而且我的模型是正确的

1 个答案:

答案 0 :(得分:0)

如果您希望在提交表单时将其值发布到服务器,那么这些输入字段应位于Html.BeginForm内。目前,您的表单中只有一个提交按钮。所以:

@using (Html.BeginForm("LogIn", "Home"))
{
    <table width="95%" height="86" border="0">
        <tr>
            <td width="45%" valign="bottom">Login:</td>
            <td width="45%" valign="bottom">Password:</td>
            <td width="10%"></td>
        </tr>
        <tr>
            <td width="45%">
                <p>
                    <input type="text" name="login" />
                </p>
            </td>
            <td width="45%">
                <p>
                    <input type="password" name="password" />
                </p>
            </td>
            <td width="10%" align="left"> 
                <input type="submit" value="Enter" />
            </td>
        </tr>
        <tr>
            <td width="45%" valign="top">
                @Html.ActionLink("Register", "Register", "Account")
            </td>
        </tr>
    </table>
}

现在,您的LogIn控制器操作可以接收2个值作为操作参数,如下所示:

[HttpPost]
public ActionResult LogIn(string login, string password)
{
    ... perform authentication
}