我有一个由控制器返回的视图和来自控制器的操作方法:
public ActionResult Create()
{
return View()
}
[HttpPost]
public ActionResult Create(FormCollection form)
{
}
我希望它们可以在一个视图中完成,如:
@model Models.RegistrationViewModel
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new {@class = "form-horizontal", role = "form"}))
{
@Html.TextboxFor(model.User.Username )
}
但问题是我无法将我的textboxfor绑定到模型属性..如何使用单个视图进行发布并进入我的场景..
答案 0 :(得分:5)
您使用@Html.Textbox(model.User.Username)
表示您生成的文本框的name
属性等于值Username
,而该值不会绑定到模型。如果UserName
的值为John
,则会生成
<input type="text" name="John" id="John" value />
将其更改为
@Html.TextBoxFor(m => m.User.Username)
将生成与您建模相关的正确name
属性
<input type="text" name="User.Username" id="User_Username" value="John" />
然后将POST方法签名更改为
[HttpPost]
public ActionResult Create(RegistrationViewModel model)
以便绑定模型并正确设置其值。
另请注意,该方法名为Create()
,因此在您的视图中,它必须是
@using (Html.BeginForm("Create", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })
答案 1 :(得分:3)
Beginform中的操作应与操作方法的名称相同:
同样,将模型传递给action方法:
margin
您还需要表单中的提交按钮才能应用帖子操作:
[HttpPost]
public ActionResult Create(RegistrationViewModel pMyModel)
{
string tUsername= pMyModel.User.Username;
}