これがどのように機能するのかよくわかりません。
エンティティオブジェクトからのパラメータの受け渡しは正常に機能します。ただし、新しいフィールドを作成すると、最初のフィールドのみが取得されます。
モデルユーザークラス:
public class User {
[Key]
public long Uid { get; set; }
[Required]
[StringLength(50, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 4)]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email:")]
public string Email { get; set; }
[Required]
[StringLength(20, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 4)]
[Display(Name = "User Name:")]
public string Username { get; set; }
public string Password { get; set; }
public byte Role { get; set; }
public DateTime Created { get; set; }
}
CSHTML:
@using (Html.BeginForm( null,
null,
FormMethod.Post,
new { id = "regform" })
) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Register</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Username)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Username)
@Html.ValidationMessageFor(model => model.Username)
</div>
<div class="editor-label">
Password:
</div>
<div class="editor-field">
@Html.Password("pwd")
</div>
<div class="editor-label">
Confirm Password:
</div>
<div class="editor-field">
@Html.Password("confirm")
</div>
<p>
<input type="submit" value="Register" />
</p>
</fieldset>
}
コントローラ:
[HttpPost]
public ActionResult Register(User user, string pwd, string confirm) {
user.Username = confirm;
user.Created = DateTime.Now;
user.Role = 255;
user.Password = EncryptPassword.Password(pwd);
if (ModelState.IsValid && pwd == confirm) {
db.Users.Add(user);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}
私が混乱しているところは、pwd
うまく拾い上げています。confirm
一方、残りnull
ます。私の最初の考えは、それが注文によって呼び出されてconfirm
おり、モデルでは単純conPwd
でした。それがうまくいかなかったとき、私はそれの名前をに変更しましたconfirm
。それはまだ機能しておらず、複数のパラメーターがコントローラーに渡される方法を説明するものが見つかりません。
編集:私のコードを更新しました。信じられないかもしれませんが、私は自分が何をしているのかを理解しようとしてきたので、これだけでほとんどの日を書くことができました。エンティティ、LINQ、MVC、ASP.NET、およびRazorをすべて同時に学習する場合は、取り入れるべきことがたくさんあります。基本的なC#は、私がこの知識を得た唯一の部分です。:)