Edu*_*elo 1 asp.net asp.net-mvc razor asp.net-mvc-4
我有一个由控制器返回的视图和来自控制器的操作方法,如下所示:
public ActionResult Create()
{
return View()
}
[HttpPost]
public ActionResult Create(FormCollection form)
{
}
Run Code Online (Sandbox Code Playgroud)
我希望它们可以在一个View中完成,如:
@model Models.RegistrationViewModel
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new {@class = "form-horizontal", role = "form"}))
{
@Html.TextboxFor(model.User.Username )
}
Run Code Online (Sandbox Code Playgroud)
但问题是我无法将我的textboxfor绑定到模型属性..如何使用单个视图进行发布并进入我的场景..
小智 5
您的使用@Html.Textbox(model.User.Username)意味着您生成的文本框的name属性等于Username不会绑定到模型的值.如果UserName说它John会产生的值
<input type="text" name="John" id="John" value />
Run Code Online (Sandbox Code Playgroud)
将其更改为
@Html.TextBoxFor(m => m.User.Username)
Run Code Online (Sandbox Code Playgroud)
这将生成与name您的模型相关的正确属性
<input type="text" name="User.Username" id="User_Username" value="John" />
Run Code Online (Sandbox Code Playgroud)
然后将POST方法签名更改为
[HttpPost]
public ActionResult Create(RegistrationViewModel model)
Run Code Online (Sandbox Code Playgroud)
以便绑定模型并正确设置其值.
另请注意,该方法Create()在您的视图中是必需的
@using (Html.BeginForm("Create", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12500 次 |
| 最近记录: |