2013-04-17 13 views
8

localdbを使用してGPS座標を管理するasp.net mvcポータルを開発しています。私のモデルは次のとおりです。ASP.NET MVCフォームとダブルフィールド

public class GpsCoordinateViewModel 
{ 
    double Latitute { get; set; } 
    double Longitude { get; set; } 
} 

新しいGpsCoordinateを作成するには、自動生成されたADN関連ビューは次のとおりです。

@{ 
    ViewBag.Title = "Create"; 
} 

<h2>Create</h2> 
@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

<fieldset> 
    <legend>GpsCoordinateViewModel</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Latitude) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Latitude) 
     @Html.ValidationMessageFor(model => model.Latitude) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Longitude) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Longitude) 
     @Html.ValidationMessageFor(model => model.Longitude) 
    </div> 
    <p> 
     <input type="submit" value="Create" /> 
    </p> 
</fieldset> 

}

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 

問題は、私は緯度として挿入することです:41.213321と経度:12.123432(例)、ブレークインのローカル値は次のとおりです:緯度:41213321経度:12123432. 位置の精度のために2倍を使用する必要がありますが、どうすればよいですか?

また、私はこの質問読み: How should I use EditorFor() in MVC for a currency/money type?

MVC3 - 3 decimal places on type double with leading zero

をしかし、解決策は私のために動作しませんでした。 提案がありますか?

EDIT: 私のWebConfigである:

<system.web> 
<httpHandlers> 
    <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
</httpHandlers> 

<!-- 
    Enabling request validation in view pages would cause validation to occur 
    after the input has already been processed by the controller. By default 
    MVC performs request validation before a controller processes the input. 
    To change this behavior apply the ValidateInputAttribute to a 
    controller or action. 
--> 
<pages 
    validateRequest="false" 
    pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=number"> 
    <controls> 
    <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=number" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
    </controls> 
</pages> 
<globalization culture="en-US" uiCulture="en-US" /> 

+0

小数点で値を入力すると、その値はcontrllerで整数として受け取られるということですか? –

+0

こんにちはv。 はい、正確には – antedesk

+0

それは面白いです。これらのデータ注釈の書式設定がなくても動作するはずです。私は文化情報にはセパレータがまったくないのでこれと何か関係があるとは思わない!うーん... –

答えて

5

はのCultureInfoによって引き起こされるかもしれないが、いくつかの培養は小数点ため,代わりに.を使用します。これはあなたのデータタイプとして、代わりにダブルの

+0

に変換する必要がありますが、うまくいかない場合でもそうです。フォームのフィールドには短い番号(3つの数字だけを記入してください)を挿入してから、新しいDbGeography(System.Data.Spatialを参照)オブジェクトを作成すると、一般的な例外があります。 – antedesk

+0

"en-US"を使用していますか?使用している場合、41.213321は正しくバインドされていませんか? – shakib

+0

私はsystem.webタグにをコピー&ペーストします。もし私が(例えば:41,213321)を使用しているなら、このフォームに私にこれを見せてください: "フィールドラティチュードは数字でなければなりません"。 41.213321を使用している場合、ブレークポイントは41213321.00と表示されます。どちらの場合もアプリケーションはキャッチされ、新しいGpsCoordinateは挿入されません。今すぐ私の質問を編集して私を表示します antedesk

1

使用進を助け、それが役立つかもしれない希望

<system.web> 
    <globalization culture="en-US" uiCulture="en-US" /> 
</system.web> 

、web.configファイルに次のように設定してみてください。

public class GpsCoordinateViewModel 
{ 
    decimal Latitute { get; set; } 
    decimal Longitude { get; set; } 
} 
+0

は動作しません... – antedesk

1

さて、Stringをデータ型として使用し、後でコントローラからDecimal値として解析します。

+0

それは汚いソリューションです:) – antedesk

関連する問題