【发布时间】:2016-05-17 18:26:50
【问题描述】:
我已经学习了一些教程,也搜索了 StackOverflow,但我仍然处于死胡同。
基本上,我正在尝试在 MVC 5 中提交一个表单(MVC 的新手,虽然大量使用了 WebForms)。所以这是我的组件 -
控制器 (./Controllers/AccountController.cs)
using BitHost.Models;
using System.Web.Mvc;
namespace BitHost.Controllers
{
public class AccountController : Controller
{
// GET: Account
public ActionResult Index()
{
return View();
}
public ActionResult Register()
{
return View();
}
[HttpPost]
public ActionResult Register(UserAccount model)
{
string sEmailAddress = model.EmailAddress;
string sPassword = model.Password;
bool bAgreedToTerms = model.AgreedToTerms;
return Redirect("/");
}
}
}
ViewModel (./Models/AccountModel.cs)
namespace BitHost.Models
{
public class UserAccount
{
public string EmailAddress;
public string Password;
public bool AgreedToTerms;
}
}
查看 (./Views/Account/Register.cshtml)
@{
Layout = "~/Views/Shared/_Layout.cshtml";
ViewBag.Title = "Register";
}
@model BitHost.Models.UserAccount
<div class="row">
<h2>Create a new account</h2>
@using (Html.BeginForm())
{
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span></span>
@Html.TextBoxFor(model => model.EmailAddress, new { Class = "form-control", Placeholder = "Email Address" })
</div><br />
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span></span>
@Html.TextBoxFor(model => model.Password, new { Class = "form-control", Type = "password", Placeholder = "Password" })
</div><br />
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span></span>
<input type="password" class="form-control" placeholder="Verify Password" />
</div><br />
<div class="input-group">
@Html.CheckBoxFor(model => model.AgreedToTerms, new { Class = "form-control" })
</div><br />
<input type="submit" name="Submit" class="btn btn-default" />
}
</div>
单击注册表单上的“提交”后,我确实会进入 [HttpPost] 操作以创建帐户,但是从模型中收集的变量都包含空值。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
我不知道为什么它发布空值,但你会想要将你的 htmlAttributes 参数更改为小写,例如
new { @class = "form-control", type = "password", placeholder = "Password" } -
可能发布空值,因为在您的控制器中您没有保存任何内容?你正在初始化,然后立即说
return Redirect。 -
@AgustinMeriles 他的动作方法可以命名相同,因为他的第一个
Register ActionResult是HttpGet,另一个Register ActionResult是HttpPost。 -
调试时是否得到了预期的结果?
-
@BviLLe_Kid 我的错!我会删除评论
标签: c# asp.net asp.net-mvc asp.net-mvc-5 viewmodel