2012-07-24 8 views
0

나는 아래에서 설명하는 기본 asp .net mvc 프로젝트 구성을 시도했다.흥미로운 Asp .net mvc 예

첫 번째 제출 전에 결과는 텍스트 상자 (@Html.TextBoxFor(model => model.Name)) 제출 후 텍스트 (@Model.Name)가 사진의 오른쪽 사진과 같이 다른 값을 나타내는 예기치 못한 결과를 나타냅니다. 왜 그래야만하지? 그들의 모델은 독특하지만 다른 값을 보여줍니다.

enter image description here

모델 :

public class Personnel 
{ 
    public string Name { get; set; } 
} 

보기 :

@model deneme.Models.Personnel 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 


@using (Html.BeginForm("Index", "Home")) 
{ 
    @Html.TextBoxFor(model => model.Name) 

    <br/> 
    <br/> 

    @Model.Name 

    <br/> 
    <br/> 

    <input type="submit" value="submit" /> 
} 

컨트롤러 :

public ActionResult Index(Personnel personnel) 
{ 
    if (string.IsNullOrEmpty(personnel.Name)) 
    { 
     personnel.Name = "Ahmet"; 
    } 
    else 
    { 
     personnel.Name = personnel.Name + "server"; 
    } 

    return View(personnel); 
} 
+0

텍스트 상자를 처음 채우지 않고 양식을 제출 했습니까? 그런 다음 코드별로 잘 작동합니다. – Shyju

+0

아니요, 같은 결과가 발생합니다. 그들은 여전히 ​​다릅니다. – serefbilge

+0

어떤 브라우저를 사용하십니까? 나는 브라우저가 자동으로 양식 필드를 채우고있을 것이라고 추측한다 .... – Tuan

답변

0

편집 : 이전 질문에 대한 답변이 없습니다.

ModelState.Clear()을 컨트롤러 동작에 추가하면 원하는대로 작동합니다.

public ActionResult Index(Personnel personnel) 
{ 
    if (string.IsNullOrEmpty(personnel.Name)) 
    { 
     personnel.Name = "Ahmet"; 
    } 
    else 
    { 
     personnel.Name = personnel.Name + "server"; 
    } 

    ModelState.Clear(); 
    return View(personnel); 
} 
+0

진짜 질문은 제출 한 후에 텍스트와 텍스트 상자가 다른 값을 갖는 이유입니다. 둘 다 같은 모델과 관련이 있습니다. – serefbilge

+0

@serefbilge, 나는이 문제를 잘못 이해했다. – Vedran

+0

예, 작동 원리는 무엇입니까? 같은 viewstate가 있습니까 (나는 그것이 modelstate라고 생각합니까)? – serefbilge

관련 문제