asp.net mvc보기 모델의 언어
이 모델이 있습니다.
public class SearchModel
{
[DefaultValue(true)]
public bool IsMale { get; set; }
[DefaultValue(true)]
public bool IsFemale { get; set; }
}
그러나 여기에 내 연구와 답변에 DefaultValueAttribute
따르면 문장을 설정하지 않습니다. 그러나 그 대답은 2008 년부터였습니다.보기에 그때 개인 필드를 사용하여 값을 true로 설정하는 것보다 속성이나 더 좋은 방법이 있습니까?
어쨌든보기는 다음과 가변적입니다.
@using (Html.BeginForm("Search", "Users", FormMethod.Get))
{
<div>
@Html.LabelFor(m => Model.IsMale)
@Html.CheckBoxFor(m => Model.IsMale)
<input type="submit" value="search"/>
</div>
}
생성자에서 설정하십시오.
public class SearchModel
{
public bool IsMale { get; set; }
public bool IsFemale { get; set; }
public SearchModel()
{
IsMale = true;
IsFemale = true;
}
}
그런 다음 GET 작업의 뷰에 전달합니다.
[HttpGet]
public ActionResult Search()
{
return new View(new SearchModel());
}
상속 모델이 생성 될 때 ViewModels
적용되는 다음 생성자 코드를 사용하여 기본 클래스를 만듭니다 DefaultValueAttributes
.
public abstract class BaseViewModel
{
protected BaseViewModel()
{
// apply any DefaultValueAttribute settings to their properties
var propertyInfos = this.GetType().GetProperties();
foreach (var propertyInfo in propertyInfos)
{
var attributes = propertyInfo.GetCustomAttributes(typeof(DefaultValueAttribute), true);
if (attributes.Any())
{
var attribute = (DefaultValueAttribute) attributes[0];
propertyInfo.SetValue(this, attribute.Value, null);
}
}
}
}
그리고 ViewModels에서 상속하십시오.
public class SearchModel : BaseViewModel
{
[DefaultValue(true)]
public bool IsMale { get; set; }
[DefaultValue(true)]
public bool IsFemale { get; set; }
}
특정 값 사용 :
[Display(Name = "Date")]
public DateTime EntryDate {get; set;} = DateTime.Now;//by C# v6
동일한 모델을 서버에 게시해야하는 경우 생성자 bool
에 이슈가있는 솔루션 이 실행되지 않습니다. 다음 모델이 가정 해봅시다.
public class SearchModel
{
public bool IsMale { get; set; }
public SearchModel()
{
IsMale = true;
}
}
보기에는 다음과 같은 것이 있습니다.
@Html.CheckBoxFor(n => n.IsMale)
문제는 사용자가이 확인란의 선택을 취소하고 서버에 게시 할 때 발생합니다. 생성자에 기본값이 설정됩니다 (이 경우 true).
따라서이 경우보기에 기본값을 지정하는 것으로 끝납니다.
@Html.CheckBoxFor(n => n.IsMale, new { @checked = "checked" })
당신은 무엇을 가질 것입니까? 아마도 기본 검색과 어딘가에서로드하는 검색으로 끝날 것입니다. 기본 검색에는 기본 생성자가 필요하므로 Dismissile이 이미 제안한 것과 같은 것을 만드십시오.
다른 곳에서 검색 기준을로드하는 경우 매핑 논리가있을 수 있습니다.
@Dismissile의 대답에 대해 언급하고 싶었습니다. 그의 대답을 편집하거나 주석을 추가 할 수 없기 때문에 View 생성자 호출 new
이 오류 (Visual Studio 2015에서 테스트 됨)가 발생할 것이라는 점을 지적 할 수 없기 때문입니다. View 클래스가 아닌 모델의 인스턴스를 생성합니다. 올바른 코드 줄은 다음과 같습니다.
return View(new SearchModel());
참고 URL : https://stackoverflow.com/questions/7637022/default-value-in-an-asp-net-mvc-view-model
'ProgramingTip' 카테고리의 다른 글
테이블 셀의 링크를 전체 행 높이 채우기 (0) | 2020.11.23 |
---|---|
Parallel.ForEach는 대형 개체가있는 열거 형으로 작업하는 경우 "메모리 부족"예외를 유발할 수 있습니다. (0) | 2020.11.23 |
OpenVPN 연결 실패 /이 시스템의 모든 TAP-Win32 어댑터가 현재 사용 중입니다. (0) | 2020.11.23 |
iPhone 유형을 확인하는 방법은 무엇입니까? (0) | 2020.11.22 |
프로그래밍 방식으로 PopupMenu 메뉴 항목 설정 (0) | 2020.11.22 |