Asp.net Html.textbox,用于不绑定到视图中的模型属性

Asp.net Html.textbox,用于不绑定到视图中的模型属性,asp.net,asp.net-mvc,asp.net-mvc-4,razor,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我有一个由控制器返回的视图和操作方法,如下所示: public ActionResult Create() { return View() } [HttpPost] public ActionResult Create(FormCollection form) { } 我希望在单个视图中完成这些操作,如下所示: @model Models.RegistrationViewModel @using (Html.BeginForm("Register", "Account", FormMe

我有一个由控制器返回的视图和操作方法,如下所示:

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绑定到模型属性。。在我的场景中,如何使用post和get的单个视图

Beginform中的操作应与操作方法同名:

[HttpPost]
public ActionResult Create(RegistrationViewModel pMyModel)
{
     string tUsername= pMyModel.User.Username;
}
另外,将模型传递给动作方法:

[HttpPost]
public ActionResult Create(RegistrationViewModel pMyModel)
{
     string tUsername= pMyModel.User.Username;
}
此外,您还需要表单中的“提交”按钮来应用post操作:

@model Models.RegistrationViewModel
@using (Html.BeginForm("Create", "Account", FormMethod.Post, new {@class = "form-horizontal", role = "form"}))
{
   @Html.TextboxFor(m => m.model.User.Username )

<input value="create" type="submit"/>
}
@model Models.RegistrationViewModel
@使用(Html.BeginForm(“Create”、“Account”、FormMethod.Post、new{@class=“form horizontal”、role=“form”}))
{
@Html.TextboxFor(m=>m.model.User.Username)
}

Beginform中的操作应与操作方法同名:

[HttpPost]
public ActionResult Create(RegistrationViewModel pMyModel)
{
     string tUsername= pMyModel.User.Username;
}
另外,将模型传递给动作方法:

[HttpPost]
public ActionResult Create(RegistrationViewModel pMyModel)
{
     string tUsername= pMyModel.User.Username;
}
此外,您还需要表单中的“提交”按钮来应用post操作:

@model Models.RegistrationViewModel
@using (Html.BeginForm("Create", "Account", FormMethod.Post, new {@class = "form-horizontal", role = "form"}))
{
   @Html.TextboxFor(m => m.model.User.Username )

<input value="create" type="submit"/>
}
@model Models.RegistrationViewModel
@使用(Html.BeginForm(“Create”、“Account”、FormMethod.Post、new{@class=“form horizontal”、role=“form”}))
{
@Html.TextboxFor(m=>m.model.User.Username)
}

您使用
@Html.Textbox(model.User.Username)
意味着您生成了一个具有
名称
属性的文本框,该属性等于
用户名
,不会绑定到模型。如果
UserName
的值在哪里说
John
它将生成

<input type="text" name="John" id="John" value />
这将生成与您的模型相关的正确的
名称
属性

<input type="text" name="User.Username" id="User_Username" value="John" />
以便绑定模型并正确设置其值

请注意,该方法的名称为
Create()
,因此在您的视图中需要

@using (Html.BeginForm("Create", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })

您使用
@Html.Textbox(model.User.Username)
意味着您生成了一个具有
名称
属性的文本框,该属性等于
用户名
,不会绑定到模型。如果
UserName
的值在哪里说
John
它将生成

<input type="text" name="John" id="John" value />
这将生成与您的模型相关的正确的
名称
属性

<input type="text" name="User.Username" id="User_Username" value="John" />
以便绑定模型并正确设置其值

请注意,该方法的名称为
Create()
,因此在您的视图中需要

@using (Html.BeginForm("Create", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })

这将是一个职位。我尝试了,但不起作用\ Beginform中的操作应与操作方法同名。我已经更新了答案,但仍然不走运。顺便说一下,我的模型是一个复杂的嵌套类。它说它有一个用户类作为它的属性。有没有可能做到这一点?这将是一个职位。我尝试了,但不起作用\ Beginform中的操作应与操作方法同名。我已经更新了答案,但仍然不走运。顺便说一下,我的模型是一个复杂的嵌套类。它说它有一个用户类作为它的属性。我稍微改变一下我的型号。我忘记设置它的属性了,我正在寻找[HttPost]属性,我稍微改变了一下我的模型。我忘了设置它的属性,因为我正在查找[HttPost]属性