我不太了解这是如何工作的。MVC3控制器如何检索HTTPPOST参数?
从我的实体对象传递参数工作正常。但是当我创建新的字段时,只有第一个被检索。
型号用户类别:
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#是我进入这种认识的唯一部分。 :)
为什么你不使用强类型视图? –
我是,但密码栏只是一个带有自定义名称的文本框。它传递给控制器,然后通过模型加密,然后传回。这不是正确的做法吗?我完全不熟悉ASP.NET MVC。 – Blanky
您是否尝试过使用表单集合 –