Как авторизовать пользователя с главной страницы форума?

Я пытаюсь реализовать простой блог, содержащий темы

модели/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>

Как я могу передать значения из полей редактирования в представлении в метод HomeController? Метод "LogIn" должен был получать данные из представления, вызывать контроллер "Account", передавая ему логин и пароль пользователя. Контроллер «Учетная запись» должен проверить этого пользователя и перенаправить браузер на главную страницу с темами.

Но я не могу получить доступ к полям редактирования логина и пароля в представлении... и я действительно не знаю, что мне делать, и правильная ли моя модель


person Eugene    schedule 22.09.2011    source источник


Ответы (1)


Эти поля ввода должны быть внутри вашего 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
}
person Darin Dimitrov    schedule 22.09.2011