2017-12-04 10 views
0

ユーザーが[Order]ボタンを押すたびにモーダルダイアログで実際の時間を取得しようとしています。ASP.NET MVC5 Razor Refreshモーダルダイアログ

<a class="btn btn-primary" data-toggle="modal" data-target="#OrderModal">@MEDONET.Language.Doctor.Texts.Order</a> 

彼はモーダルのdiv OrderModalに

だからアクションが実際にすべての時間を実行しているとCreateOrderForm.cshtmlを呼び出しているアクション

public ActionResult CreateOrderForm(CreateOrderVM createOrderVM) 
    { 
     createOrderVM.Minute = DateTime.Now.Minute.ToString().PadLeft(2, '0'); 
     return View("CreateOrderForm", createOrderVM); 
    } 

をCreateOrderForm呼び出し

<div id="OrderModal" class="modal fade" role="dialog"> 
    @Html.Action("CreateOrderForm", Model.CreateOrderVM) 
</div> 

これを行うので、毎回ファイル

@{ 
Layout = null; 
} 
@model MEDONET.Models.CreateOrderVM 

<div class="modal-dialog modal-sm"> 
<!-- Modal content--> 
<div class="modal-content"> 
    <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal">&times;</button> 
     <h4 class="modal-title text-center">Order To Line</h4> 
    </div> 
    <div class="modal-body"> 
     @using (Html.BeginForm("CreateOrder", "Doctors", FormMethod.Post)) 
     { 
      @Html.AntiForgeryToken() 
      @Html.HiddenFor(m => m.DoctorId) 
      <div class="row text-center"> 
       <p>Date & Time</p> 
       @Html.Label("Year") 
       @Html.EditorFor(model => model.Year, new { htmlAttributes = new { @class = "form-control", @Value = DateTime.Now.Year } })<br /> 
       @Html.Label("Month") 
       @Html.EditorFor(model => model.Month, new { htmlAttributes = new { @class = "form-control", @Value = DateTime.Now.Month } })<br /> 
       @Html.Label("Day") 
       @Html.EditorFor(model => model.Day, new { htmlAttributes = new { @class = "form-control", @Value = DateTime.Now.Day } })<br /> 
       @Html.Label("Hour") 
       @Html.EditorFor(model => model.Hour, new { htmlAttributes = new { @class = "form-control", @Value = DateTime.Now.Hour } })<br /> 
       @Html.Label("Minute") 
       @Html.EditorFor(model => model.Minute, new { htmlAttributes = new { @class = "form-control" } })<br /> 
       @if (this.User.IsInRole("Registrator")) 
       { 
        @Html.EditorFor(model => model.PhoneNumber, new { htmlAttributes = new { @class = "form-control" } })<br /> 
       } 
       <button type="submit" class="btn btn-default">Submit</button> 
      </div> 
     } 
    </div> 
    <div class="modal-footer"> 

    </div> 
</div> 

BUT!ポップアップフィールドは、親ページの読み込み中に最初に入力されたままになります。

[注文]ボタンを押すたびにユーザーに新しい時間を与える方法を教えてください。

+0

ボタンをクリックするたびにそのメソッドを呼び出すコードはどこですか? ( '@ Html.Action(" CreateOrderForm "、Model.CreateOrderVM)'はページを初めてレンダリングしたときに呼び出すだけです) –

+0

そして、 'HtmlHelper'メソッドを使用する際には、バインディングするプロパティの値を設定します。 –

+0

また、 '[HttpGet]'と '[HttpPost]'で修飾されたメソッドがあるはずですか? –

答えて

0

ページが最初に読み込まれるときに1回だけ実行されます。その後、モーダルポップアップを切り替えるたびに、同じHTMLを表示/非表示にするだけです。解決策は、ボタンをクリックしてモーダルを開くと、HTMLを更新することです。これを実現するには、JQueryのload()メソッドを使用できます。

まず、HTMLではなくモーダルを切り替えるには、JavaScriptを使用する必要があります。 JavaScriptで

<a class="btn btn-primary" id="openModal">@MEDONET.Language.Doctor.Texts.Order</a> 

以下のようなあなたのボタンを変更し、その後

$('#openModal').on('click', function() { 
    ... 
}) 

以下のように、このボタンのイベントハンドラを追加し、子アクションの内容をロードします。

$('#openModal').on('click', function() { 
    $("#OrderModal").load("@Url.Action("CreateOrderForm", "ControllerName")", function() { 
    $('#OrderModal').modal('show') 
    }); 
}) 

私は上記のコードをテストしておらず、誤植はほとんどありません。それが動作しない場合、私に知らせてください。

+0

私はこれをしました

0

私は、このメソッドがいくつかの種類の投稿を使用し、新しいフォームを返すと推測しています。 この場合、同じビューを返すと、モデルの状態はそれらのフィールドを設定する状態になります。あなたはちょうど私が推薦するモーダルの時間を変更したい場合は、アクションに

ModelState.Clear(); 

それとも

ModelState.Remove("myChangeValue"); 

を追加し、それを解決するためには、https://blogs.msdn.microsoft.com/simonince/2010/05/05/asp-net-mvcs-html-helpers-render-the-wrong-value/

でより多くの情報を探すことができますあなたはモーダルを表示するときにjavascriptでそれを変更します。

$('#OrderModal #Minute').val(new Data().getMinutes()); 
+0

。!。それは私が私が私のHtml.EditorForにIDを追加することができますどのように...と思います動作するようになっ? –

+0

それは動作しません:( –

+0

your'eは、最初の部分を参照する場合は、POSTリクエストを持っている場合、それだけです。 2番目に、 "modal"を表示するときにこの行を追加する必要があります(エディタIDを見つけるには、通常、要素インスペクタで表示できる "_"で区切られたモデルのチェーンエディタ) – Srulik

関連する問題