0

まず、私は MVC3 にまったく慣れていないので、正しくないことをしている可能性があります。回答を検索しようとしましたが、間違った検索用語を使用している可能性があります。

*質問:- * ユーザーが From 値と To 値を入力できるフォームがあります。From 値が入力されたら、jQuery を使用してモデルの StartTime 値を更新したいと思います。その後、To と Quantity をフォームに入力し続け、最後に [OK] をクリックして値を Controller に送り返します。

From テキスト ボックスがフォーカスを失ったときにモデルの StartTime を更新するにはどうすればよいですか?

public class DetailsModel
{
    public string From{get;set;}
    public string To {get;set;}
    public int Quantity{get;set;}
    public DateTime StartTime{get;set;}
}

私の見解では、次のようなjQueryが少しあります

<script type="text/javascript">
    $(function () {
        $('#From').blur(function () {
            alert('Work out how to set StartTime On Model here');
        });
    });
</script>
4

3 に答える 3

1

簡単な答え: できません。ページがクライアントに表示されると、モデルはなくなります。存在しません。

モデルを更新する唯一の方法は、値をサーバーにポストすることです。

おそらく代わりにやりたいことは、ローカル クライアントの値を変更し、隠しフィールドを使用して更新された値を保持し、最終的にそれらをサーバーにポストバックすることです。次に、StartTime をローカルで更新して、それを反映します。

サーバーとクライアントの分離について根本的な誤解があります。モデルはサーバー上にのみ存在し、クライアント上には存在しません。クライアントで変更を加えたいのですが、それは問題ありません..しかし、それらの変更をローカルで追跡し、後で送信する必要があります。

別の方法は、サーバーに更新を投稿し続けることです..しかし、それは非常に無駄です。

于 2012-09-18T15:29:48.787 に答える
0

はい、まず、javascript を使用して現在の時刻を取得できます。サーバーにアクセスする必要はありません。本当にサーバーにアクセスしたい場合は、Ajax を使用して非表示フィールドに値を格納できます。

$(function () {

    $('#From').blur(function () {

        $.get('getTime', function(data){               
            $('#someHiddenField').val(data);
        });

    });

});

または、本当に気が狂って startTime というセッション変数を作成し、そこに時間を設定することもできます。次に、フォームを送信するときに、そこから値を取得します。

于 2012-09-18T16:12:51.717 に答える
0
    $('input[name=From]').change(function () {
        $('#StartTime').val(set_your_value_here);
    }

入力の変更は、ぼかしよりも頻繁に機能することがわかりました。

于 2012-09-18T16:19:18.390 に答える