MVC 응용 프로그램에서 분수를 표시하고 편집하려고합니다. 이전에 WPF에서 나는 converter이라는 개념을 사용하여 double을 취해이를 사용자 분수로 형식화 한 다음 사용자 입력을 가져 와서 다시 분수로 변환했습니다. Razor보기에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까?MVC/Razor보기에서 분수를 표시하고 편집하는 방법
답변
: 는 여기에 대한 좋은 기사입니다. 나는 그것이 최선의 방법인지 아닌지 아직 확실하지 않지만 작동한다.
public class HomeController : Controller
{
public ActionResult Index()
{
MyModel ViewModel = new MyModel { MyDouble = 0.06 };
return View(ViewModel);
}
[HttpPost]
public ActionResult Index(MyModel model)
{
// Update db.
// Do what you want to do.
return View(model);
}
}
인덱스보기 (홈 \ Index.cshtml \ \ 조회수) :
@model MvcApplication1.Models.MyModel
@{ViewBag.Title = "Index";}
@Html.DisplayFor(m => m.MyDouble)
<br />
@using (Html.BeginForm("Index", "Home"))
{
@Html.EditorFor(m => m.MyDouble)
<input type="submit" value="Submit" />
}
<script type="text/javascript">
function fraction_changing(hiddenFieldId, numeratorId, denominatorId) {
var numeratorValue = document.getElementById(numeratorId).value;
var denominatorValue = document.getElementById(denominatorId).value;
var hiddenField = document.getElementById(hiddenFieldId);
hiddenField.value = numeratorValue/denominatorValue;
}
</script>
public class MyModel
{
[DataType("Fraction")] //It's important to define DataType
public double MyDouble { get; set; }
}
여기 내 간단한 컨트롤러 :
나는 슈퍼 간단한 모델을 정의위의 Javascript 코드에 대해 잠시 후에 알 수 있습니다.
표시 템플릿 또한 매우 쉽습니다. 방금 double 값을 Fraction으로 변환하기 위해 Fraction class (By Syed Mehroz Alam)을 사용했습니다.
아시다시피, 템플릿 (부분보기)은 "보기"폴더 아래의 "DisplayTemplates"및 "EditorTemplates"폴더에 배치해야합니다. 다른 모든 뷰에서 사용할 수 있도록 "Views \ Shared \"에 넣는 것을 선호합니다.
Fraction.cshtml (\ 조회수가 공유 \ ** DisplayTemplates는 \ Fraction.cshtml **)
@using Mehroz // Fraction class lives in Mehroz namespace
@inherits System.Web.Mvc.WebViewPage<double>
@{
Fraction fraction = new Fraction(Model);
}
@fraction.Numerator/@fraction.Denominator
의 현재 편집 템플릿입니다 까다로운 부분, 살펴 보겠습니다. 그래서 여기
이 Fraction.cshtml입니다 (\ 조회수 \ 공유 ** EditorTemplates \ Fraction.cshtml **)
@using Mehroz
@inherits System.Web.Mvc.WebViewPage<double>
@{
Fraction fraction = new Fraction(Model);
string numeratorStr = fraction.Numerator.ToString();
string denominatorStr = fraction.Denominator.ToString();
string unifier = Guid.NewGuid().ToString().Replace('-', '_');
string hiddenFieldElementId = string.Format("hiddenField{0}", unifier);
string numeratorElementId = string.Format("numerator{0}", unifier);
string denominatorElementId = string.Format("denominator{0}", unifier);
string onchangingFunctionSyntax =
string.Format("fraction_changing('{0}', '{1}', '{2}')",
hiddenFieldElementId,
numeratorElementId,
denominatorElementId);
}
@Html.HiddenFor(m => m, new { id = hiddenFieldElementId })
@Html.TextBox("Numerator", numeratorStr,
new { id = numeratorElementId, onchange = onchangingFunctionSyntax })/
@Html.TextBox("Denominator", denominatorStr,
new { id = denominatorElementId, onchange = onchangingFunctionSyntax })
이 템플릿은 정말 무엇을 : double 값을 변환
- (그 모델)을 분수의 인스턴스로 변환합니다.
- 별도의 텍스트 입력에서 분수의 분자 및 분모 값을 표시합니다. 자바 스크립트 코드는
document.getElementById(id)
에 의해 요소를 얻기 위해 고유 한 ID를 필요로하기 때문에 - 는
(자바 스크립트에 의해) double 값을 다시 계산, 우리의 템플릿 편집 관련 요소에 대한 이러한 고유 ID를 생성 할 수있다.
여기에서 코드를 다운로드 할 수 있습니다. http://sdrv.ms/MlyDI2
입력을 변경하고 다시 게시하면 값을 이중으로 올바르게 바인딩합니까? – PlTaylor
필자는 App_Code 도우미를 사용하여 분수 함수의 문자열에 넣어서 적절한 이름 인 ID ....를 지정하고 함께 작성한 것보다 확실히 더 낫다는 것을 인정해야합니다. 그런 다음 사용자 지정 모델을 작성했습니다 바인더를 사용하여 DefaultModelBinder를 가로 채고 분수가 바인딩되지 않는 공백을 채 웁니다. – PlTaylor
@ PITaylor- 내 노트북에서 작동합니다 (Win 7, ASP.NET 4, MVC 3, VS2012 SP1). [코드 다운로드] (http://sdrv.ms/MlyDI2) 직접 테스트하십시오. – Tohid
가장 좋은 방법은 표시/수정 템플릿을 개발하는 것입니다. 나는 내가 생각했던 것보다 더 힘들 었어요 인정
Overriding DisplayFor and EditorFor to create custom outputs for MVC
- 1. Qt 테이블 전체에 데이터를 표시하고 편집하는 방법
- 2. phpmydatagrid에서 2 테이블의 데이터를 표시하고 편집하는 방법
- 3. pdf 파일을 표시하고 android에서 콘텐츠를 편집하는 방법
- 4. 분수를 단순화하는 방법
- 5. 루비로 플로트로 분수를 변환하는 방법
- 6. 2 진수로 분수를 표현하는 방법
- 7. flexigrid에서 데이터를 편집하는 방법
- 8. Crystal Reports에서 예쁜 분수를 표시하는 방법 PDF
- 9. 편집하는 방법 내용 file_get_contents
- 10. DisclosurePanel 헤더의 색을 편집하는 방법
- 11. XtraCharts에서 showInPanes 속성을 편집하는 방법
- 12. 포인트 분수를 저급 분수로 변환하는 방법?
- 13. AJAX 응용 프로그램에서 소스 코드를 표시하고 편집하는 아이디어
- 14. Delphi 7에서 DBGrid의 하이퍼 링크를 표시하고 편집하는 방법은 무엇입니까?
- 15. 자바 분수를 함께 추가
- 16. 텍스트 분수를 소수로 변환
- 17. DataGridComboBoxColumn을 강제로 편집하는 방법?
- 18. gpedit 정책을 편집하는 방법
- 19. 데이터베이스 파일을 편집하는 방법?
- 20. CLI에서 php.ini를 편집하는 방법
- 21. codeigniter 양식을 편집하는 방법
- 22. DsoFramer 1.3을 편집하는 방법?
- 23. XSL로 XML을 편집하는 방법?
- 24. jqGrid에서 셀을 편집하는 방법?
- 25. XML 파일을 편집하는 방법
- 26. Javascript에서 PDF를 편집하는 방법?
- 27. R에서 데이터를 편집하는 방법?
- 28. 비밀번호없이 사용자를 편집하는 방법
- 29. .sdf 파일을 편집하는 방법
- 30. 오디오 버퍼를 편집하는 방법
어떻게 작성 하시겠습니까? –
뷰에 써넣고 서버에 다시 읽는 방법은 내가 묻는 질문이다.저는 뷰에 넣기 위해 문자열을 쓸 수있는 분수 클래스를 가지고 있지만, 다시 읽는 것은 그렇게 명확하지 않습니다. – PlTaylor
@ Html.Raw (Model.Field) 또는 @ Model.Field를 시도 했습니까? –