0

jQuery mobile \ MVCアプリに少し奇妙な問題があり、これまで追跡できませんでした。

私の見解では、2つのHTML.HiddenForフィールドがあります。これらのフィールドの値は、フォームが投稿されたときに、コントローラーのモデルクラスのプロパティにバインドされます。プロパティのタイプはDoubleです。フォームが投稿されたときの私のローカル開発マシンでは、値はokにバインドされます。ただし、アプリをリモートサーバーにデプロイすると、モデルバインディングが機能しなくなり、アプリを再び機能させる唯一の方法は、プロパティタイプをDoubleからstringに変更することです。

これが私のモデルです:-

 public class HomeViewModel
{
    public Double Latitude                  { get; set; }   //form value binds locally but does not bind on remote server
    public Double Longitude                 { get; set; }   //form value binds locally but does not bind on remote server
    public string LatitudeStr               { get; set; }   //form value binds 
    public string LongitudeStr              { get; set; }   //form value binds

これが私の見解です:-

 @using (Html.BeginForm("Index","Branches", FormMethod.Post, new { ID = "frmSearch", data_transition = "none" })){       
   @Html.HiddenFor(model => model.Latitude, new { id = "hdnLat" })  
   @Html.HiddenFor(model => model.Longitude, new { id = "hdnLong" })  

これが私のコントローラーです:-

  [HttpPost]
    public ActionResult Index(HomeViewModel model)
    {

フォームを送信した後にページを調べると、input-validation-errorクラスが非表示の要素に追加されていることがわかります。

Firebugの投稿情報を見ると、値が投稿されていることがわかります。

上記はローカルでは正常に機能しますが、リモートサーバーからは実行されません。

私が見る限り、ローカルおよびリモートで実行すると、まったく同じ値がサーバーにポストバックされます

誰かがこれに光を当てることができれば素晴らしいでしょう

4

1 に答える 1

0

非表示フィールドのバリデーターを含めます。知らない検証メッセージを受け取っているか、モデルエラーを表示するように検証サマリーを設定している可能性があります。サーバー上のカルチャが、区切り文字としてコンマを使用していたクライアントと競合する前に、floatで同様の問題が発生しました。これが、Doubleの解析中に失敗しなくなったため、文字列として機能する理由です。

于 2013-02-25T18:00:34.507 に答える