4

我在从ASP.NET MVC 4 Razor 项目中获取/处理POST数据时遇到问题。<form>

我做了什么?

不要争论我的代码,我只是在测试 ASP.NET MVC 4 功能。

正如您在控制器的代码中看到的那样,我还为用户信息做了一个模型:

public class AuthForm
{
    public string Login { get; set; }
    public string Password { get; set; }
}

我以为,如果模型正确,ASP.NET 会自动将数据解析到模型中,但错了。

然后我尝试使用.Request["name"],但是(输入不为空):

在此处输入图像描述

我也尝试过使用这样的属性

  • [HttpPost]
  • [AcceptVerbs(HttpVerbs.Post)]

但也没有成功!

我做错了什么?请帮我解决我的问题。

谢谢

4

1 回答 1

2

您需要使用辅助方法,以便 MVC 知道如何绑定值,然后在控制器中您将能够使用模型(因为模型绑定器会为您解决)

例如

@model Models.AuthForm
@{
    ViewBag.Title = "СЭЛФ";
}
@section home {

@using (Html.BeginForm("Auth", "Controller")) {
    <div class="control-group">
        @Html.LabelFor(model => model.Login, new { @class = "control-label" })
        <div class="controls">
            @Html.TextBoxFor(model => model.Login, new { @class = "input-large", autocapitalize = "off" }) 
            @Html.ValidationMessageFor(model => model.Login, "*", new { @class = "help-inline" })
       </div>
    </div>

    <div class="control-group">
        @Html.LabelFor(model => model.Password, new { @class = "control-label" })
        <div class="controls">
            @Html.PasswordFor(model => model.Password, new { @class= "input-large" }) 
            @Html.ValidationMessageFor(model => model.Password, "*", new { @class = "help-inline" })
        </div>
    </div>
    <div class="form-actions">
         <input type="submit" class="btn btn-primary" value="Log On" />
    </div>
}
}

使用本机 HTML 控件是一种选择,但您需要以与上述辅助方法相同的方式执行此操作,否则将不会填充模型。

于 2013-06-24T05:54:31.430 回答