首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC3 html.TextBox

MVC3 html.TextBox
EN

Stack Overflow用户
提问于 2011-04-28 00:45:57
回答 1查看 8.8K关注 0票数 0

我有一个接受LoginPageViewModel的登录视图:

代码语言:javascript
复制
public class LoginPageViewModel : PageViewModel
{
    public string ReturnUrl { get; set; }

    public bool PreviousLoginFailed { get; set; }

    public LoginFormViewModel EditForm { get; set; }
}

它在视图中呈现。当用户尝试登录时,我只想将LoginFormViewModel (Model.EditForm)发送到控制器:

代码语言:javascript
复制
public ActionResult Login(LoginFormViewModel loginDetails)
{
     //do stuff
}

使用Html.TextBox,我可以手动指定表单域的名称'loginDetails.UserName‘,然后回发到控制器,一切都会正常工作。

代码语言:javascript
复制
@model Web.Controllers.User.ViewModels.LoginPageViewModel

@using (Html.BeginForm()){
@Html.Hidden("loginDetails.ReturnUrl", Model.ReturnUrl)

    @Html.LabelFor(x => x.EditForm.UserName, "User Name:")
    @Html.TextBox("loginDetails.UserName", Model.EditForm.UserName)
    @Html.ValidationMessageFor(x => x.EditForm.UserName)

.....

但我想要做的是使用统计类型的helper,类似于:

代码语言:javascript
复制
@Html.TextBoxFor(x => x.EditForm.UserName)

但我不能让它起作用。

当你使用强类型的帮助器时,你只能发回相同的模型吗?我是不是漏掉了什么?Intellisense似乎不会给出任何线索,比如表单字段字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-28 00:47:20

您可以指定前缀,以便默认模型绑定器可以成功解析属性:

代码语言:javascript
复制
[HttpPost]
public ActionResult Login(
    [Bind(Prefix = "EditForm")]LoginFormViewModel loginDetails
)
{
    ...
}

现在,您可以随意使用强类型的TextBoxFor,甚至更好:EditorFor帮助器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5807614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档