3

MVC アプリに奇妙な問題があります。

ユーザーがドロップダウンから日付を選択すると、フィールドStartDateEndDateフィールドがクリアされます。

次のコードの断片があります。

    <label>Start date: @Model.StartDate</label>
    @Html.TextBoxFor(s => s.StartDate)

奇妙なことに、私が出力しているラベルに日付が表示されます。テキストボックスには何も入力されていません。

生成されたマークアップを確認しましたが、テキスト ボックスにデータが入力されていません。

    <label>Start date: 19/05/2013</label>
    <input id="StartDate" name="StartDate" type="text" value="" />        <br />

ここで何が欠けていますか?

もう少し情報を追加するために、ページが最初に入力されると、デフォルトの開始日と終了日が出力されます。<select>aが変更されたときにこれらのフィールドを空にする jQuery が少しあります。そのビットをコメントアウトすると、フィールドは空白ではなく以前の値を保持します。基本的に、モデル内の値ではなく、サーバーに送信されたものはすべて出力されます。

4

3 に答える 3

2

基本的に、モデル内の値ではなく、サーバーに送信されたものはすべて出力されます。

この動作は、実際には仕様によるものです。一般的に、ユーザーはサーバーに送信したものをテキスト ボックスに表示することを期待するという考えです。

詳細な説明と回避策については、こちらを参照してください。

于 2013-06-06T23:34:51.747 に答える
0

これを行う代わりに

   <label>Start date: @Model.StartDate</label>
    @Html.TextBoxFor(s => s.StartDate)

これを行う必要があります

   <label id="someId"></label>
    @Html.TextBoxFor(s => s.StartDate,new{@id="startdate"})

テキストボックスの変更イベントでjqueryを使用すると、ラベルを設定できます

$("#startdate").change(function(){
var date="Start Date:"+$(this).val();
$("#someid").html(date);
});
于 2013-05-29T06:34:10.330 に答える