시간이 지나면. 나중에 인터넷. 머리카락이 나중에 당겨.C# mvc 도우미 확장 Html.DisplayFor
Prs_Role_ID_Deleted는 int입니다.
내 Details.cshtml에서 model.Prs_Role_ID_Deleted = 0 (제로)의 값을 출력하면 ""(빈 문자열)을 출력하려고합니다.
문제는 모델 => model.Prs_Role_ID_Deleted의 값을 가져올 수 없다는 것입니다. 속성 이름을 얻을 수 있습니다. 모델을 가져올 수 있습니다 .Prs_Role_ID_Deleted.
나는 나는 값을 확인하는 것은 불가능하다고 생각하기 시작하고 22
@Html.ZZZ(model => model.Prs_Role_ID_Deleted)
public static MvcHtmlString ZZZ<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression)
{
var id = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression));
return "whatever";
}
동일해야 model.Prs_Role_ID_Deleted의 값을 얻을 수 없습니다입니다.
감사 SLAK. 그것은 해결책이었습니다.
다른 개발자 용 게시 솔루션.
SLaks 조언 @ Html.DisplayForWithID_ZeroIsBlank (모델 => model.Prs_Role_ID_Deleted, "기간") wrapperTag = "범위"
공공 정적 MvcHtmlString DisplayForWithID_ZeroIsBlank (이 Html 헬퍼 도우미, 표현> 표현, 문자열 AFTER) { var id = 헬퍼. 뷰 컨테이너. 뷰 데이터. 템플릿. 정보. TModel 모델 = (TModel) helper.ViewContext.ViewData.ModelMetadata.Model; var ctlValue = expression.Compile() (helper.ViewData.Model); string OutputValue = "어리석은 개발자. int에만 적용됩니다."; 유형 type = ctlValue.GetType(); if (type.Equals (typeof (int)) { string s = ctlValue.ToString(). Trim(); if (ctlValue == null || ctlValue.ToString(). Trim() == "0") { OutputValue = ""; } else { OutputValue = ctlValue.ToString(); } } return MvcHtmlString.Create ("< {0} id = \"{1} \ "> {2}", wrapperTag, id, OutputValue, helper.DisplayFor (expression))); }
그런 다음, 대리인에 식을 컴파일 모델을 호출 할 필요가
이유 뷰 모델을 만들 수 없습니다 거기에 모든 변환을합니까? – Fran
Fran, MVC가 작동하는 방식은 "모델"에는 순수한 데이터의 모델 만 포함된다는 것입니다. 출력 형식은 cshtml, JS 또는 helper 확장 중 하나입니다. 나에게 출력 포맷을 결합하는 것은 아이스크림과 같은 플레이트에 햄버거를 넣는 것과 같을 것이다. 네, 할 수 있지만 진짜 엉성한 얻을 것이다. – JenniferWalters
보기 모델은 출력 형식 지정과 아무런 관련이 없습니다.보기 모델에는 페이지에 대한 데이터 항목이 있습니다. 순수한 데이터는 정확히 무엇입니까? – Fran