2011-04-27 8 views
0

내가 로그인 한보기 :보기에 렌더링MVC3 html.TextBox

public class LoginPageViewModel : PageViewModel 
{ 
    public string ReturnUrl { get; set; } 

    public bool PreviousLoginFailed { get; set; } 

    public LoginFormViewModel EditForm { get; set; } 
} 

. 사용자가 난 단지 컨트롤러에 LoginFormViewModel (Model.EditForm)을 게시 할 로그인을 시도 할 때 : Html.TextBox를 사용

public ActionResult Login(LoginFormViewModel loginDetails) 
{ 
    //do stuff 
} 

내가 수동으로 양식 필드 'loginDetails.UserName'의 이름을 지정할 수 있습니다 컨트롤러에 다시 게시하면 모든 것이 작동합니다.

@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) 

..... 

는하지만 내가하고 싶은 것은 같은 staticaly 입력 도우미, 뭔가를 사용하는 것입니다

@Html.TextBoxFor(x => x.EditForm.UserName) 

을하지만이 작업을 얻을 수 없습니다입니다.

강력한 형식의 도우미를 사용할 때만 같은 모델을 게시 할 수 있습니까? 이게 내가 누락 된 것이 있습니까? Intellisense는 양식 필드 문자열과 같은 단서를 제공하지 않습니다. EditorFor 도우미 :

[HttpPost] 
public ActionResult Login(
    [Bind(Prefix = "EditForm")]LoginFormViewModel loginDetails 
) 
{ 
    ... 
} 

은 이제 강하게 TextBoxFor 또는 더 나은를 입력 자유롭게 사용 : 기본 모델 바인더가 성공적으로 속성을 해결할 수 있도록

답변

1

당신은 접두사를 지정할 수 있습니다.