2014-10-01 2 views
2

Razor를 뷰 엔진으로 사용하는 ASP.NET MVC 앱에서 작업하고 있습니다. 난 그냥 @Model.Price@Model.Price.ToString("G")를 교체 할 경우ASP.NET MVC에서 면도기의 값 서식 지정

Cannot perform runtime binding on a null reference 

내 응용 프로그램의 작동 : 나는 말한다 오류가 발생,

<div class="form-group"> 
    <label class="control-label" for="price">Price</label> 
    <div class="input-group"> 
    <div class="input-group-addon">$</div> 
    <input id="price" name="price" class="form-control" type="text" autocomplete="off" value="@Model.Price.ToString("G")" /> 
    </div> 
</div> 

이 코드가 실행

을 시도하고있다. 그러나 십진수 값이 제대로 형식이 지정되지 않았습니다. 가격 변수는 내 컨트롤러 작업에서옵니다. 컨트롤러에서 나는 다음을 가지고 있습니다 :

public ActionResult View(int? id) 
{ 
    Product product = null; 
    if (id.HasValue) 
    product = Product.LoadFromDb(id.Value); 
    else 
    product = new Product(); 

    // product.Price is a nullable decimal (i.e. decimal?) 

    return View(product); 
} 

소수점 이하 두 자리로 내보기의 가격을 어떻게 지정합니까?

감사합니다.

+0

없음이 인용되지를 제대로, 면도기 핸들 그. – Phaeze

+1

null이 아니 었습니까? Try @ Model.Price.Value.ToString ("G")'아마도? – PoweredByOrange

+0

@Phaeze 정답. 내 실수. –

답변

0

nullable 인 경우 값 @Model.Price.Value.ToString("G")이 필요하지만이 값은 HasValue을 확인하는 것이 좋습니다.

솔직히 제 의견으로는 서버 측에서 포맷을해야합니다.

+0

서버 측의 서식 지정을 수행합니다. –

0

여기 Nullable이라는 것이 문제입니다.

주석에 PoweredByOrange의 제안은 정확해야하지만 난 널 체크를 추가도 추천 할 것입니다 아니면 그냥 다른 예외로 같은 것을 실행하겠습니다 :

value="@(Model.Price.HasValue ? Model.Price.Value.ToString("G") : "$0.00")"