私はいくつかのチュートリアルを続けてきましたが、私はStackOverflowを精査しましたが、まだまだ終わりが近づいています。ViewModelの値は常にnullです
基本的に、私はMVC 5でフォームを送信しようとしています(MVC初心者ですが、Webフォームを大量に使用していました)。だからここに私のコンポーネントである -
コントローラ(./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]アクションを取られますか、しかし、変数はすべて、NULL値を含むモデルから集められました。
ご協力いただきありがとうございます、ありがとうございます。
のように編集あなたのコントローラに何も保存していないので、 'new {@class =" form-control "、type =" password "、placeholder =" Password "}' – jrummell
あなたは初期化してすぐに 'return redirect'と言っています。 –
@AgustinMeriles彼のアクションメソッドは、彼の最初の 'Register ActionResult'が' HttpGet'であり、他の 'Register ActionResult'が' HttpPost'なので、同じ名前を付けることができます。 –