2013-06-23 3 views
0

내가 매우 간단한 컨트롤러 +보기가 어딘가에 수정ASP.NET 면도기 뷰 모델 속성은

public ActionResult Edit(string username) 
{ 
    return View(ComponentFactory.GetAdapter<IUserListAdapter>().Get(username)); 
} 

이 지금까지 우리가 우리의 MVC4 응용 프로그램에서이 간단한 컨트롤러와 뷰입니다
@model BAP.Models.UserList 
@using GrmanIT.Utils.Web 
@using BAP.Models 
@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Globale Benutzer</legend> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.UserId) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.UserId) 
      @Html.ValidationMessageFor(model => model.UserId) 
     </div> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.UserName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.UserName) 
      @Model.UserName 
      @Html.ValidationMessageFor(model => model.UserName) 
     </div> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.Bundesland) 
     </div> 
     <div class="editor-field"> 
      @Html.DropDownListFor(model => model.Bundesland, new SelectList((IEnumerable<BAP.Models.Bundesland>)ViewData["BundeslandList"], "Value", "Text")) 
     </div> 
     <div> 
      <input type="submit" value="@LocalizationHelper.LocalizedLiteral("Save").ToString()" /> 
     </div> 
    </fieldset> 
} 
<div> 
    @Html.ActionLink(LocalizationHelper.LocalizedLiteral("BackToList").ToString(), "Index") 
</div> 
@Model.UserName 

,하지만 이상한 일을합니다. @ Html.EditorFor (model => model.UserName)로 작성된 TextBox를 얻으십시오 모드의 사용자 번호 대신 사용자 이름

의 난 내가하고 디버깅 및 사용자 이름사용자 아이디 거기에 항상 정확한 값. 또한 @ Model.UserName을 View 내에서 두 번 추가하여 올바르게 렌더링되는지 확인할 수 있습니다. 예, ID가 아닌 UserName이 인쇄됩니다.

나는 UserName- 속성에 대한 참조를 확인했으며 수정하지 않은 것을 찾지 못했습니다. 제 질문은 - 코드를 수정할 수있는 곳이나 발견 할 수있는 방법이 있습니까?

그것은이 하나 개의 동작에만이 하나의 컨트롤러에서 발생 (중 ~ 25 컨트롤러와 ~ 200 개 행동)

가 다시이었다 ModelState 당신에게

답변

0

확인 감사 - 당신은에서 볼 수 있듯이 위의 코드 - 함수에 대한 매개 변수를 "username"이라고하지만 실제로는 userId입니다. 그리고

이미 매개 변수의 이름이 있기 때문에, 그것은 ModelState에 저장되고 내가

@Html.EditorFor(model => model.UserName) 

를 호출 할 때 그것은 (사용자 아이디는 액션 매개 변수의 이름 아래에 저장됩니다 실제로)를 ModelState에서 값을 취

따라서 ModelState.Clear()를 호출하거나 실제 값을 나타내도록 매개 변수의 이름을 바꾸는 솔루션이 있습니다.