4 개의 문자열 필드가있는 모델을 선언합니다. 3은 읽기 전용 폼 :MVC 모델이 형식으로 유지되지 않습니다
public class HomeModel
{
[ReadOnly(true)]
[DisplayName("Service Version")]
public string ServiceVersion { get; set; }
[ReadOnly(true)]
[DisplayName("Session Id")]
public string SessionId { get; set; }
[ReadOnly(true)]
[DisplayName("Visiting from")]
public string Country { get; set; }
[DisplayName("Search")]
public string SearchString { get; set; }
}
내가 내 양식에, 그것을 채우기 후, 모델을 통과 :
[HttpGet]
public ActionResult Index()
{
var model = new HomeModel
{
Country = "Australia",
SearchString = "Enter a search",
ServiceVersion = "0.1",
SessionId = "76237623763726"
};
return View(model);
}
그리고 폼이 나는 예상대로 표시됩니다
<h2>Simple Lookup</h2>
@Html.LabelFor(m=>m.ServiceVersion): @Model.ServiceVersion<br/>
@Html.LabelFor(m=>m.SessionId): @Model.SessionId<br/>
@Html.LabelFor(m=>m.Country): @Model.Country<br/>
<p>
@using(Html.BeginForm())
{
@Html.LabelFor(m => m.SearchString)
@Html.TextBoxFor(m => m.SearchString)
<button type="submit" name="btnSearch">Search</button>
}
</p>
그러나 양식을 제출하고 양식에서 모델을 다시 가져 오면 SearchString의 값만 채워집니다.
[HttpPost]
public ActionResult Index(HomeModel model)
{
return View(model);
}
는 다른 필드는 '손실'한 바로 그것이인가? MVC는 모델 클래스의 다른 멤버를 보존하지 않습니까? 그리고 이것이 예상된다면 다시 얻을 수있는 방법이 있을까요? 아니면 데이터베이스로 돌아가 모델에 이전 값을 채운 다음 양식 모델의 새 값을 사용해야합니까?
'읽기 전용'필드를 모델에서 다시 읽으려는 타당성이 의심 스러울 수 있습니다. 이는 공정합니다.하지만 게시 된 데이터에 대해 의심스러운 점을 발견 한 경우, 화면을 표시하고 데이터베이스에서 데이터를 다시 읽지 않아도됩니까?
[ReadOnly (true)] 은 속성이 읽기 전용이므로 게시 된 값과 바인딩되지 않습니다. –