这是我要发布的视图:
@model WelcomeViewModel
@using (Html.BeginForm("SignUp", "Member", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post))
{
....
<div class="form-group">
@Html.EditorFor(model => model.SignUp.CompanyName, new {htmlAttributes = new {@class = "form-control" }})
</div>
<div class="form-group">
@Html.EditorFor(model => model.SignUp.RegisteredNo, new {htmlAttributes = new {@class = "form-control" } })
</div>
....
<button type="submit" name="signup" class="btn">Register</button>
}
ViewModel:
public class WelcomeViewModel
{
public SignInViewModel LogOn { get; set; }
public SignUpViewModel SignUp { get; set; }
}
动作方法:
[HttpPost, AllowAnonymous, ValidateAntiForgeryToken]
public virtual async Task<ActionResult> SignUp(SignUpViewModel model)
{
if (!ModelState.IsValid)
return View("SignIn", new WelcomeViewModel { SignUp = model });
// other code
return View();
}
当我发布数据时,模型将为空。我知道输入将生成为:
<input id="SignUp_CompanyName" name="SignUp.CompanyName">
但是模型联编程序接受以下内容:
<input id="SignUp_CompanyName" name="CompanyName">
现在我想知道如何删除该前缀?我知道我可以为每个输入显式添加名称:
@Html.TextBoxFor(model => model.SignUp.CompanyName, new { Name = "CompanyName" })
但我想以一种强类型的方式来做。
也许最简单的方法是将[Bind]
属性及其Prefix
设置应用于“ SignUp”:
public async Task<ActionResult> SignUp([Bind(Prefix="SignUp")] SignUpViewModel model)
参见MSDN
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句